Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
86b37497
Commit
86b37497
authored
May 15, 2006
by
Kurt Zeilenga
Browse files
Fixed libldap default connection concurrency issue (ITS#4541)
parent
bc835b91
Changes
5
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
86b37497
...
...
@@ -3,6 +3,7 @@ OpenLDAP 2.3 Change Log
OpenLDAP 2.3.22 Engineering
Fixed libldap referral input destroy issue (ITS#4533)
Fixed libldap ldap_sort_entries tail bug (ITS#4536)
Fixed libldap default connection concurrency issue (ITS#4541)
Fixed libldap_r thread debug missing break
Fixed libldap_r tpool cleanup
Fixed liblutil strtoul(3) usage (ITS#4503)
...
...
libraries/libldap/cyrus.c
View file @
86b37497
...
...
@@ -602,23 +602,31 @@ ldap_int_sasl_bind(
return
ld
->
ld_errno
;
}
rc
=
0
;
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_lock
(
&
ld
->
ld_req_mutex
);
#endif
ber_sockbuf_ctrl
(
ld
->
ld_sb
,
LBER_SB_OPT_GET_FD
,
&
sd
);
if
(
sd
==
AC_SOCKET_INVALID
)
{
/* not connected yet */
int
rc
;
rc
=
ldap_open_defconn
(
ld
);
if
(
rc
<
0
)
return
ld
->
ld_errno
;
ber_sockbuf_ctrl
(
ld
->
ld_defconn
->
lconn_sb
,
LBER_SB_OPT_GET_FD
,
&
sd
);
if
(
rc
==
0
)
{
ber_sockbuf_ctrl
(
ld
->
ld_defconn
->
lconn_sb
,
LBER_SB_OPT_GET_FD
,
&
sd
);
if
(
sd
==
AC_SOCKET_INVALID
)
{
ld
->
ld_errno
=
LDAP_LOCAL_ERROR
;
return
ld
->
ld_errno
;
if
(
sd
==
AC_SOCKET_INVALID
)
{
ld
->
ld_errno
=
LDAP_LOCAL_ERROR
;
rc
=
ld
->
ld_errno
;
}
}
}
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_unlock
(
&
ld
->
ld_req_mutex
);
#endif
if
(
rc
!=
0
)
return
ld
->
ld_errno
;
oldctx
=
ld
->
ld_defconn
->
lconn_sasl_authctx
;
...
...
libraries/libldap/kbind.c
View file @
86b37497
...
...
@@ -255,12 +255,18 @@ ldap_get_kerberosv4_credentials(
return
(
NULL
);
}
err
=
0
;
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_lock
(
&
ld
->
ld_req_mutex
);
#endif
if
(
ber_sockbuf_ctrl
(
ld
->
ld_sb
,
LBER_SB_OPT_GET_FD
,
NULL
)
==
-
1
)
{
/* not connected yet */
int
rc
=
ldap_open_defconn
(
ld
);
if
(
rc
<
0
)
return
NULL
;
err
=
ldap_open_defconn
(
ld
);
}
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_unlock
(
&
ld
->
ld_req_mutex
);
#endif
if
(
err
<
0
)
return
NULL
;
krbinstance
=
ld
->
ld_defconn
->
lconn_krbinstance
;
...
...
libraries/libldap/open.c
View file @
86b37497
...
...
@@ -35,6 +35,7 @@
#include
"ldap-int.h"
#include
"ldap_log.h"
/* Caller should hold the req_mutex if simultaneous accesses are possible */
int
ldap_open_defconn
(
LDAP
*
ld
)
{
ld
->
ld_defconn
=
ldap_new_connection
(
ld
,
...
...
libraries/libldap/request.c
View file @
86b37497
...
...
@@ -93,19 +93,25 @@ ldap_send_initial_request(
BerElement
*
ber
,
ber_int_t
msgid
)
{
int
rc
;
int
rc
=
1
;
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_send_initial_request
\n
"
,
0
,
0
,
0
);
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_lock
(
&
ld
->
ld_req_mutex
);
#endif
if
(
ber_sockbuf_ctrl
(
ld
->
ld_sb
,
LBER_SB_OPT_GET_FD
,
NULL
)
==
-
1
)
{
/* not connected yet */
int
rc
=
ldap_open_defconn
(
ld
);
if
(
rc
<
0
)
{
ber_free
(
ber
,
1
);
return
(
-
1
);
}
rc
=
ldap_open_defconn
(
ld
);
}
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_unlock
(
&
ld
->
ld_req_mutex
);
#endif
if
(
rc
<
0
)
{
ber_free
(
ber
,
1
);
return
(
-
1
);
}
else
if
(
rc
==
0
)
{
Debug
(
LDAP_DEBUG_TRACE
,
"ldap_open_defconn: successful
\n
"
,
0
,
0
,
0
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment