X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconnection.c;h=8e082cf1c310ea91ddded64bc0bd2254fe0a768a;hb=3b63f718e17d271ae2145ecf2ceb8d3791397191;hp=aecb4252df966c6ddef603ed22b63872db4a3776;hpb=d3ceb19b91be09535f957639e795b3cbd2ea36d0;p=openldap diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index aecb4252df..8e082cf1c3 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -310,6 +310,15 @@ static Connection* connection_get( ber_socket_t s ) assert( c->c_struct_state != SLAP_C_UNINITIALIZED ); ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd ); +#ifdef HAVE_WINSOCK + /* Avoid race condition after releasing + * connections_mutex + */ + if ( sd != s ) { + ldap_pvt_thread_mutex_unlock( &c->c_mutex ); + return NULL; + } +#endif if( c->c_struct_state != SLAP_C_USED ) { /* connection must have been closed due to resched */