mirror of
https://github.com/samba-team/samba.git
synced 2025-01-24 02:04:21 +03:00
r5556: Fix the build on AIX.
use AF_UNIX instead of AF_LOCAL (thanks to Doug VanLeuven <roamdad-at-sonic.net>) and make smbldap_open() a bit more readable. Guenther (This used to be commit 526d6a9493cd091f2a9b8e072f11e673133fe5c1)
This commit is contained in:
parent
f95e9fc45b
commit
f823e8c411
@ -873,8 +873,9 @@ static int smbldap_connect_system(struct smbldap_state *ldap_state, LDAP * ldap_
|
||||
*********************************************************************/
|
||||
static int smbldap_open(struct smbldap_state *ldap_state)
|
||||
{
|
||||
int rc;
|
||||
int rc, opt_rc;
|
||||
SMB_ASSERT(ldap_state);
|
||||
BOOL reopen = False;
|
||||
|
||||
#ifndef NO_LDAP_SECURITY
|
||||
if (geteuid() != 0) {
|
||||
@ -883,12 +884,21 @@ static int smbldap_open(struct smbldap_state *ldap_state)
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((ldap_state->ldap_struct != NULL) && ((ldap_state->last_ping + SMBLDAP_DONT_PING_TIME) < time(NULL))) {
|
||||
if ((ldap_state->ldap_struct != NULL) && ((ldap_state->last_ping + SMBLDAP_DONT_PING_TIME) < time(NULL))) {
|
||||
|
||||
struct sockaddr_un addr;
|
||||
socklen_t len = sizeof(addr);
|
||||
int sd;
|
||||
if (ldap_get_option(ldap_state->ldap_struct, LDAP_OPT_DESC, &sd) == 0 &&
|
||||
((getpeername(sd, (struct sockaddr *) &addr, &len) < 0) || addr.sun_family == AF_LOCAL)) {
|
||||
|
||||
opt_rc = ldap_get_option(ldap_state->ldap_struct, LDAP_OPT_DESC, &sd);
|
||||
if (opt_rc == 0 && (getpeername(sd, (struct sockaddr *) &addr, &len)) < 0 )
|
||||
reopen = True;
|
||||
|
||||
#ifdef HAVE_UNIXSOCKET
|
||||
if (opt_rc == 0 && addr.sun_family == AF_UNIX)
|
||||
reopen = True;
|
||||
#endif
|
||||
if (reopen) {
|
||||
/* the other end has died. reopen. */
|
||||
ldap_unbind_ext(ldap_state->ldap_struct, NULL, NULL);
|
||||
ldap_state->ldap_struct = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user