Commit Graph

2689 Commits

Author SHA1 Message Date
Hallvard Furuseth
c60f7c1fd2 For ITS#4943: Axe thread pool semaphore code 2007-06-10 23:37:49 +00:00
Hallvard Furuseth
25a7729a12 int -> ber_socklen_t for getsockname() 2007-06-10 20:35:30 +00:00
Hallvard Furuseth
5d083f3859 int -> ber_socklen_t for getsockopt() 2007-06-10 20:34:05 +00:00
Hallvard Furuseth
28da797a3a ITS#5007: Wrap code using MSG_WAITALL in #ifdef MSG_WAITALL. 2007-06-09 23:43:02 +00:00
Hallvard Furuseth
bfdb026fab ITS#5007: Remove void* pointer arithmetic, that's a gcc extension. 2007-06-09 23:41:36 +00:00
Hallvard Furuseth
3750520f6f Fix HP-UX crash: Replace socklen_t with ber_socklen_t from configure. ITS#4629. 2007-06-09 23:35:20 +00:00
Howard Chu
469a45a62f ITS#4992 fix cldap 2007-06-08 09:40:17 +00:00
Howard Chu
431f6fd810 ITS#4955 fix typo in referral chasing 2007-06-08 09:17:00 +00:00
Hallvard Furuseth
b327239618 Remove ltp_active_list. It became unneeded when rev 1.24 added thread_keys[].
Tighten loop in pool_pause(): Omit unneeded ltp_pcond signals since rev 1.64.
Fix comment.
2007-06-04 22:18:01 +00:00
Hallvard Furuseth
b3e4305131 Simplify: Remove tid_zero, thread_keys[].id and ldap_int_main_tid.
Not needed after ldap_int_thread_userctx_t.ltu_id was added and
_pool_wrapper took care not to update thread_keys[] during pauses.
Fix bogus thread_keys[].ctx comment.
2007-06-01 15:24:19 +00:00
Hallvard Furuseth
1b890689b1 Add comments. Constify tid_zero. Shut up gcc -Wswitch. if(!tpool)->assert(). 2007-05-31 19:47:38 +00:00
Hallvard Furuseth
1f3e6110b9 Add variable ldap_int_has_thread_pool, assert(at most one pool); 2007-05-31 17:15:54 +00:00
Hallvard Furuseth
9a9d216526 Shut up gcc -Wformat 2007-05-31 17:07:57 +00:00
Hallvard Furuseth
1b15fa9c6e In pool_submit():
- Move problematic mutex_unlock()-mutex_lock() into the unused #ifdef
  LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL and add a FIXME comment inside.
- Delay ltp_starting--; until pool_wrapper().  Nonzero value could otherwise
  no longer be exposed when !defined LDAP_PVT_THREAD_POOL_SEM_LOAD_CONTROL.
2007-05-31 12:47:24 +00:00
Hallvard Furuseth
45389c0341 Preserve key order when deleting, so context_reset will free last keys first. 2007-05-31 12:08:50 +00:00
Hallvard Furuseth
7c6b26a68f Make get_thread_info() static. Handle ldap_pvt_thread_pool_t = int (not ptr). 2007-05-30 22:20:20 +00:00
Hallvard Furuseth
101b6b9363 Fix --without-tls (ITS#4975). Enable certificate matching. 2007-05-20 22:48:21 +00:00
Hallvard Furuseth
c47e444698 libldap/tls.c calls CRYPTO_set_id_callback(ldap_pvt_thread_self), which
causes ldap_pvt_thread_self to be called with the wrong prototype.

That can cause OpenSSL to use a garbage value, e.g. if the unsigned
long it expects takes two words but ldap_pvt_thread_t is an int.

I'm fixing it in HEAD now and also provoking an error if unsigned
long cannot hold a ldap_pvt_thread_t.  Otherwise it can silently
compile to broken code.  Maybe the latter should go in configure,
but since OpenSSL presumably breaks anyway if that fails I don't
see much point at this time.
2007-05-20 20:02:52 +00:00
Hallvard Furuseth
eb351d9e33 ITS#4972: $LDAP_THREAD_DEBUG, detached threads, debug_already_initialized().
Also plug a memory leak, set state vars even when unused for the sake of
debugging, and tweak some readability issues & data types.
2007-05-18 17:49:38 +00:00
Hallvard Furuseth
6f3cf907b8 Readability patch: ERRVAL() macro for pthreads < 7 vs. >= 7 return values. 2007-05-18 15:28:09 +00:00
Hallvard Furuseth
f906a99eec Only define x509_cert_get_dn() when HAVE_GNUTLS. Remove unused variable. 2007-05-18 15:10:15 +00:00
Howard Chu
d9a43aee44 Fix GNUtls acknowledgement, initial work by Matt Backes. Sponsored by
The Written Word and Stanford University.
2007-05-14 23:35:36 +00:00
Ralf Haferkamp
6ee5d7d3da make openssl builds working again 2007-05-14 12:19:32 +00:00
Howard Chu
423f20c915 GNUtls - ignore free of NULL ctx 2007-05-13 09:43:41 +00:00
Howard Chu
5f36d32596 Don't NUL-terminate bervals during DN parsing 2007-05-13 09:37:37 +00:00
Howard Chu
47a8f3213b Merged GNUtls support into main tls.c 2007-05-13 00:15:27 +00:00
Pierangelo Masarati
7601a1f3fb fix read off by one (spotted by valgrind) 2007-05-12 12:38:09 +00:00
Hallvard Furuseth
e509d3ed9a Comment fixes.
Corrected rev 1.67 cvs comment: ltu_key[] is NULL-terminated _when not full_.
2007-05-11 18:48:13 +00:00
Howard Chu
236e5f50b3 Added ciphersuite support 2007-05-10 21:49:43 +00:00
Howard Chu
c51fd6c96e Add LDAP_OPT_X_TLS_CRLFILE, peer cert verification for GNUtls 2007-05-10 19:43:28 +00:00
Hallvard Furuseth
810b2389dc Since we only have LDAP_MAXTHR thread_keys, allow max LDAP_MAXTHR
threads per pool, even when ltp_max_count <= 0 ("unlimited").
Keep ltp_max_count in range [0, LDAP_MAXTHR].
2007-05-09 23:25:03 +00:00
Hallvard Furuseth
f0a1511422 Make ldap_int_thread_userctx_t.ltu_key[] a proper NULL-terminated array.
(setkey/getkey expected that, but purgekey could set a NULL in the middle.)
Added some checks for input key!=NULL.

API changes, need review - I'm not sure what's indented here:
- setkey(data=NULL, kfree!=NULL) searched as if intended to reset
  the key, but updated by setting the key.  Now always updates.
- setkey(key=<not found>, data=NULL) could return either success or
  failure.  Now succeeds iff (data == NULL && kfree == NULL).
2007-05-09 22:59:04 +00:00
Hallvard Furuseth
f5da908c49 thread_keys is a (poor) open-addessed hash table, but it lacked a
"deleted item" mark.  Add DELETED_THREAD_CTX.
Also improve the hash function a bit, and make the hash unsigned.
2007-05-09 22:22:44 +00:00
Hallvard Furuseth
8a92825225 Protect thread_keys[] with ldap_pvt_thread_pool_mutex, except in
ldap_pvt_thread_pool_purgekey() which may only be called during pauses.

Thus, also wait for pauses to finish before accessing thread_keys in
ldap_int_thread_pool_wrapper().  This may prevent pending tasks from
being started when a pause had been requested, which seems to have been
possible.  If that was a feature, we can split ltp_pause==1 in 2 states:
in pause (causes wait), and pause requested.

Also move 'thread_keys[].id = <thread id>' from pool_submit to
pool_wrapper.  Until pool_wrapper set the ctx as well, thread context
lookup would just return NULL anyway.
2007-05-09 21:38:28 +00:00
Hallvard Furuseth
92afeb8ef7 Replace state LDAP_INT_THREAD_POOL_PAUSING with member ltp_pause,
so a pause will work during states FINISHING and STOPPING.

Add missing waits and signals, and move waits in pool_wrapper().
Replace if(test) with while(test) when waiting for the multi-purpose
condition variable ltp_cond.
2007-05-09 19:53:25 +00:00
Hallvard Furuseth
9e9bf22a64 ITS#4943:
In ldap_pvt_thread_pool_submit(), when backing out of thread creation:
  ltp_pending_count '++' -> '--'.  Signal if there are no more threads.
In ldap_int_thread_pool_wrapper():
  if() -> assert() where false would result in eternal loop.
2007-05-09 19:34:49 +00:00
Hallvard Furuseth
bb890724d4 Don't complain if detached threads exit after ldap_debug_thread_destroy(). 2007-05-09 19:21:08 +00:00
Hallvard Furuseth
7b7b137832 Cast Debug(%p) pointer argument to void* 2007-05-09 18:38:10 +00:00
Hallvard Furuseth
bbc719ca56 ITS#4948: '#if <undefined macro>' -> '#ifdef' warning cleanup 2007-05-09 18:17:10 +00:00
Howard Chu
b7cfa97817 coverity error, u->lud_scheme is mandatory 2007-05-08 14:13:18 +00:00
Howard Chu
4803e9ba67 Revert prev commit, unnecessary 2007-04-23 14:27:07 +00:00
Howard Chu
7eb1f62f9d ITS#4935 SASL_MAX_BUFF_SIZE should be 2^24 - 1 2007-04-23 14:21:48 +00:00
Pierangelo Masarati
f29a4e140e don't assert(0); apparently, other responses may result from a simple bind (but log them, at least; ITS#4924) 2007-04-11 08:57:41 +00:00
Howard Chu
28493e554c ITS#4912 fix typo in prev commit 2007-04-05 00:16:17 +00:00
Hallvard Furuseth
545b5555fb ber_decode_oid(), ber_encode_oid(): cast bv_val to unsigned char* 2007-04-04 17:51:10 +00:00
Howard Chu
848be16aaf ITS#4879 fixes for url parse/unparse 2007-04-03 03:27:24 +00:00
Howard Chu
b596ae0adf ITS#4875 ignore zero-length st_size 2007-04-03 01:40:52 +00:00
Howard Chu
c80d5f970a ITS#4899 fix for keys not getting cleared 2007-04-01 11:52:51 +00:00
Howard Chu
c49812bf6f ITS#4893 back to pipes... 2007-03-26 12:44:11 +00:00
Howard Chu
867fb2fd9f ITS#4893 just send the client socket, not a pipe descriptor. 2007-03-25 15:20:50 +00:00
Howard Chu
c6df30118f ITS#4893 fix prev commit 2007-03-25 12:18:06 +00:00
Howard Chu
7426ab07fc ITS#4893 define LDAP_PF_LOCAL_SENDMSG in <ac/socket.h> if a message must
be sent to transmit client credentials. Buffer the message data.
2007-03-25 04:40:22 +00:00
Howard Chu
724784e6cb Use AC_MEMCPY 2007-03-25 04:31:34 +00:00
Howard Chu
49d708fae3 Preliminary GNUtls support. gnutls.c will merge back into tls.c later. 2007-03-23 23:47:07 +00:00
Howard Chu
b213588f95 Add options for ber_get_stringbv() to omit NUL-terminator, to allow
non-destructive in-place parsing
2007-03-23 15:27:38 +00:00
Howard Chu
f2a02b90ed Fix TLS default for clients 2007-03-23 12:47:35 +00:00
Howard Chu
a4f879f9d2 ITS#4880 s/HAVE_POSIX_TERMIOS/HAVE_TERMIOS_H/ 2007-03-23 01:10:58 +00:00
Howard Chu
9fe8f72310 Add DER OID encoder/decoder 2007-03-20 15:10:16 +00:00
Howard Chu
23ba7dfa12 Add ber_skip_data() to help positioning in structured BER data 2007-03-20 12:29:06 +00:00
Pierangelo Masarati
1429b49d1e apparently, time_t is unsigned in some systems 2007-03-12 21:04:01 +00:00
Kurt Zeilenga
0a1301bc6b Add support for uuid_generate/uuid_unparse 2007-03-02 07:36:23 +00:00
Pierangelo Masarati
687ed8861a don't play with URL list if connect(2) is asynchronous 2007-02-21 22:26:26 +00:00
Kurt Zeilenga
b3c4004042 Remove extrananous space in DN (in comment) 2007-02-19 23:39:01 +00:00
Kurt Zeilenga
7beb587a4b Cleanup last commit 2007-02-15 01:42:23 +00:00
Kurt Zeilenga
a9aeb858fe Needs <ac/time.h> 2007-02-15 01:20:46 +00:00
Howard Chu
8db4bd2cc9 Coverity error, uninit'd rc 2007-02-13 11:13:14 +00:00
Howard Chu
1f635b8bcf ITS#4707 added new ldap_init_fd() API 2007-02-12 04:20:24 +00:00
Howard Chu
ee2001ea4b Note mutex protection requirements 2007-02-11 13:45:39 +00:00
Howard Chu
6cbf65642a Move duplicate timestamp detection into lutil_gettime() 2007-02-11 13:42:29 +00:00
Howard Chu
ced581bfa3 Cleanup extraneous debug 2007-02-11 13:01:32 +00:00
Howard Chu
a1aa7c284d Revert to original ldap_get_option( TIMEOUT ) behavior 2007-02-06 23:02:47 +00:00
Howard Chu
7ac06970e6 Don't let timestamps go backward 2007-02-06 04:48:35 +00:00
Howard Chu
75d0b4ee97 Require non-NULL input for timeout options 2007-02-05 20:38:25 +00:00
Howard Chu
0c542682b1 Timeouts should not be malloc'd 2007-02-05 20:32:44 +00:00
Howard Chu
b984564dbd Handle timeouts from ldap_result() 2007-02-05 12:30:40 +00:00
Howard Chu
b4c2cf250d Fairly sure this is what the TIMEOUT option should always have been for 2007-02-05 10:10:24 +00:00
Howard Chu
e0ed944be3 Added ber_bvarray_dup_x() 2007-02-05 04:31:38 +00:00
Howard Chu
4b1bb81452 Add lutil_gettime() returning structured time with microseconds. Use
microseconds in CSNs. Omit microseconds from modifyTImestamp...
2007-02-02 23:10:30 +00:00
Pierangelo Masarati
5afd693a6d remove unused code 2007-02-02 12:38:32 +00:00
Howard Chu
de46a75158 Keep HAVE_POLL functionality inside its #ifdefs 2007-02-02 12:29:21 +00:00
Howard Chu
f97f109483 Fix prev commit again 2007-01-28 02:12:29 +00:00
Howard Chu
99a8deb160 ITS#4821 partially revert prev patch 2007-01-27 18:40:02 +00:00
Howard Chu
977bd839cc Calling setkey() with NULL data and kfree should erase the key. 2007-01-25 11:53:09 +00:00
Howard Chu
2298595ea3 Free thread keys in reverse order of allocation 2007-01-25 11:13:15 +00:00
Howard Chu
52a7af8230 ITS#4815 get_option for TLS Cipher Suite was not implemented 2007-01-24 23:38:26 +00:00
Howard Chu
26a47e7bd0 Framework for loadable mapper implementations 2007-01-12 23:20:17 +00:00
Hallvard Furuseth
cb27c61010 avoid nonconst* = const* assignment in ldif_open_url(). 2007-01-11 12:06:31 +00:00
Hallvard Furuseth
d16754c81b Delete unused variables. 2007-01-11 12:04:22 +00:00
Howard Chu
f1784a54e6 ITS#4648, alternate fix 2007-01-10 08:52:07 +00:00
Pierangelo Masarati
7ee7699bb9 more on ITS#4799 2007-01-10 01:18:52 +00:00
Howard Chu
bec25494fe ITS#4799 remove kerberos / kbind references 2007-01-10 00:20:42 +00:00
Howard Chu
9ece06c8f5 ITS#4799 remove all references to kbind 2007-01-09 23:48:28 +00:00
Pierangelo Masarati
9b5ea6a205 honor network timeout even when doing full async 2007-01-07 22:05:33 +00:00
Pierangelo Masarati
aa3c9bad3e First cut to truly async connect:
- after connect(2), if async the connection is in "connecting" state
	- the first time a request is sent, "connecting" conns are polled
		- in case of success, the request is sent
		- in case still connecting, LDAP_X_CONNECTING is returned;
		  clients are expected to retry later
	- the "async" behavior must be explicitly enabled by setting
	  the LDAP_OPT_CONNECT_ASYNC option

"local" connections need work
2007-01-07 19:20:46 +00:00
Pierangelo Masarati
5513ac6335 import of LDAP Sync client API 2007-01-06 18:28:32 +00:00
Pierangelo Masarati
c310cfd837 minor cleanup 2007-01-06 18:27:34 +00:00
Pierangelo Masarati
5ce13437de unsolicited responses shouldn't necessarily end the connection 2007-01-05 15:23:39 +00:00
Pierangelo Masarati
8cb4f6b348 fix previous commit 2007-01-04 19:26:59 +00:00
Pierangelo Masarati
d4324d5813 fix \& improve previous commit 2007-01-04 18:33:45 +00:00
Pierangelo Masarati
4b75dd6be3 implement client-side handling of RFC 4511 unsolicited responses and "Notice of Disconnect" 2007-01-04 15:01:22 +00:00
Kurt Zeilenga
da6d9eb046 happy new year 2007-01-02 20:00:42 +00:00
Pierangelo Masarati
dd94ddba57 don't leave dependencies on liblutil in libldap :) 2006-12-17 22:04:25 +00:00
Howard Chu
28a1868127 Eliminate redundant checks in try_read1msg 2006-12-14 10:02:14 +00:00
Howard Chu
157069fe91 ITS#4545 better fix. this code still needs cleaning up. 2006-12-14 06:58:57 +00:00
Howard Chu
6350fad63f ITS#4545 when referral chasing is off, complete the request 2006-12-13 00:36:12 +00:00
Pierangelo Masarati
5a000a9b91 fix warnings after previous commit 2006-12-04 00:11:12 +00:00
Pierangelo Masarati
a76b702d4c fix request/result abandon 2006-12-03 20:56:25 +00:00
Howard Chu
7540751392 ITS#4723 add CRYPTO_set_id_callback 2006-11-30 06:37:12 +00:00
Howard Chu
2ccecba836 URL with authority spec must use absolute path 2006-11-27 19:03:59 +00:00
Howard Chu
e7be7301c2 allow file: URLs without authority spec. 2006-11-27 18:59:46 +00:00
Howard Chu
9446f8554b define LDIF_MAXLINE instead of using BUFSIZ 2006-11-27 18:59:04 +00:00
Pierangelo Masarati
72e586ba36 revert previous commit; disable RESTART from ldap.conf 2006-11-13 23:51:52 +00:00
Pierangelo Masarati
3c1df853e4 fix endless loop in canceling child requests; cleanup 2006-11-12 14:22:24 +00:00
Howard Chu
7eb3d25a5b Silence warning in prev commit 2006-11-10 10:42:39 +00:00
Howard Chu
b42d93f24f ITS#3755 silence strict-aliasing warnings 2006-11-10 10:39:54 +00:00
Howard Chu
8e48a3c317 ITS#4726 call ldap_pvt_tls_init() in init_ctx() to make sure initialization
is done
2006-11-09 23:00:38 +00:00
Howard Chu
961f0ba113 Fix strval2strlen end-of-string check. Otherwise passing in a string
without string[len] == '\0' causes assert in ldap_dn2bv_x.
2006-11-08 23:57:02 +00:00
Pierangelo Masarati
4f351fbd90 fix build with thread debugging 2006-11-05 09:22:53 +00:00
Pierangelo Masarati
dc871de33d cleanup prvious commit; log number of abandoned requests waiting for response... 2006-11-02 19:11:18 +00:00
Howard Chu
60a25c72ba ITS#4724 revert prev commit, better fix. 2006-10-30 18:44:52 +00:00
Howard Chu
29fbd00272 ITS#4724 fix _uccase_map parameters 2006-10-30 07:54:39 +00:00
Pierangelo Masarati
71bcd4a4b6 s/ldap_int_discard/ldap_pvt_discard/ 2006-10-28 18:13:12 +00:00
Pierangelo Masarati
57259831c6 fix message (ITS#4717) 2006-10-28 16:19:08 +00:00
Kurt Zeilenga
dbaf7c5c25 More ldapbis cleanup 2006-10-28 04:47:58 +00:00
Kurt Zeilenga
ba2d7ec007 More LDAPBIS cleanup 2006-10-28 03:27:01 +00:00
Kurt Zeilenga
4587e053e7 Misc LDAPbis comment update
Remove unnecessary ISOC notices
2006-10-27 19:37:04 +00:00
Pierangelo Masarati
5ee5709993 fix build without threads (ITS#4721) 2006-10-26 22:03:12 +00:00
Pierangelo Masarati
6416d83372 add ldap_int_discard(); use it in proxies (ITS#4717) 2006-10-22 20:31:41 +00:00
Kurt Zeilenga
60e1237c4e Parse txn failed msgid 2006-10-20 06:46:38 +00:00
Pierangelo Masarati
968da1cb14 add LDAP_OPT_DIAGNOSTIC_MESSAGE; replace deprecated option names 2006-10-14 17:04:17 +00:00
Pierangelo Masarati
387c21c7dd apply slightly revised patch for SO_KEEPALIVE (ITS#4708) 2006-10-14 12:42:33 +00:00
Pierangelo Masarati
3dc7480b8b minor cleanup 2006-10-09 21:18:36 +00:00
Pierangelo Masarati
799f2b1449 I hate code duplication, but don't require functions from liblutil in libldap.so 2006-10-08 17:14:04 +00:00
Howard Chu
e16058d857 TS#4635 CR LF is also a valid line separator 2006-10-07 22:18:15 +00:00
Pierangelo Masarati
2f964def8a add support for VERSION, TIMEOUT and NETWORK_TIMEOUT in ldap.conf 2006-09-26 02:34:36 +00:00
Pierangelo Masarati
a9a4a14d80 use AC_LINE_MAX 2006-09-26 00:33:44 +00:00
Pierangelo Masarati
7ed909045f document the LDAP builtin map in librewrite (ITS#4602) 2006-09-24 17:50:48 +00:00
Pierangelo Masarati
0ccdccd0a7 further cleanup 2006-09-24 17:26:17 +00:00
Pierangelo Masarati
5385d13bf8 fix previous commit 2006-09-23 16:10:07 +00:00
Pierangelo Masarati
0d05846dc8 fix potential double free in case of error 2006-09-23 15:43:55 +00:00
Pierangelo Masarati
6a6aa424bc improve functionality of LDAP map: allow protocol version 2006-09-23 13:04:55 +00:00
Pierangelo Masarati
ccdb52ed47 fix way long standing bug in args parsing 2006-09-23 12:33:03 +00:00
Pierangelo Masarati
43f7706c49 add URL parsing test tool 2006-09-23 11:44:16 +00:00
Kurt Zeilenga
62f4745bfc ITS#4679 cleanup
Note: the caller is expected to pass in a valid LDAP handle.  If not,
the assert will trigger to let him know his code is broken.
2006-09-21 20:02:55 +00:00
Pierangelo Masarati
67f3fd8078 monitor __ALL__ thread parameters 2006-09-14 18:55:02 +00:00
Howard Chu
deea7b5530 MSVC compatibility 2006-09-14 08:06:49 +00:00
Howard Chu
2cc356588e dirent emulation for MSVC 2006-09-14 08:01:05 +00:00
Howard Chu
57c329a3af ITS#4606 errno is not per-thread on WIN32, always use WSAGet/SetLastError
(with notable exceptions: ignore tests for EINTR which winsock never sets)
2006-09-14 06:35:34 +00:00
Pierangelo Masarati
4481502313 use a more reasonable max line length (ITS#4669) 2006-09-12 20:41:37 +00:00
Pierangelo Masarati
ae20e41b70 fix outdated comments 2006-09-06 12:04:52 +00:00