diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c index 1187e28fae..fec28e0d1c 100644 --- a/libraries/libldap/request.c +++ b/libraries/libldap/request.c @@ -447,20 +447,22 @@ find_connection( LDAP *ld, LDAPURLDesc *srv, int any ) */ { LDAPConn *lc; - LDAPURLDesc *ls; + LDAPURLDesc *lcu, *lsu; + int lcu_port, lsu_port; for ( lc = ld->ld_conns; lc != NULL; lc = lc->lconn_next ) { - for ( ls = srv; ls != NULL; ls = ls->lud_next ) { - if ( lc->lconn_server->lud_host != NULL && - *lc->lconn_server->lud_host != '\0' && - ls->lud_host != NULL && *ls->lud_host != '\0' && - strcasecmp( ls->lud_host, lc->lconn_server->lud_host ) == 0 - && ls->lud_port == lc->lconn_server->lud_port ) { + lcu = lc->lconn_server; + lcu_port = lcu->lud_port ? lcu->lud_port : LDAP_PORT; + for ( lsu = srv; lsu != NULL; lsu = lsu->lud_next ) { + lsu_port = lsu->lud_port ? lsu->lud_port : LDAP_PORT; + if ( lcu->lud_host != NULL && *lcu->lud_host != '\0' + && lsu->lud_host != NULL && *lsu->lud_host != '\0' + && strcasecmp( lsu->lud_host, lcu->lud_host ) == 0 + && lsu_port == lcu_port ) { return lc; } - if ( !any ) { - break; - } + + if ( !any ) break; } }