"have something to write to client %lu\n",
c->c_connid );
- if ( ber_flush( c->c_sb, c->c_pendingber, 1 ) ) {
+ /* We might have been beaten to flushing the data by another thread */
+ if ( c->c_pendingber && ber_flush( c->c_sb, c->c_pendingber, 1 ) ) {
int err = sock_errno();
if ( err != EWOULDBLOCK && err != EAGAIN ) {
ldap_pvt_thread_mutex_unlock( &c->c_io_mutex );
if ( c->c_currentber ) {
ber_free( c->c_currentber, 1 );
+ c->c_currentber = NULL;
}
if ( c->c_pendingber ) {
ber_free( c->c_pendingber, 1 );
+ c->c_pendingber = NULL;
}
CONNECTION_UNLOCK(c);
"have something to write to upstream %lu\n",
c->c_connid );
- if ( ber_flush( c->c_sb, c->c_pendingber, 1 ) ) {
+ /* We might have been beaten to flushing the data by another thread */
+ if ( c->c_pendingber && ber_flush( c->c_sb, c->c_pendingber, 1 ) ) {
int err = sock_errno();
if ( err != EWOULDBLOCK && err != EAGAIN ) {
Debug( LDAP_DEBUG_ANY, "upstream_write_cb: "