X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconnection.c;h=5fe8d148fd7462fd904233162f2eecc5a34cdfe7;hb=cff264c6e1b91632b1722506c022e519a216e422;hp=4f359a85325af9f0f3dda2607549dd1370a8d7c3;hpb=a6ea07dd63a5eac50332bb295867696092b03b53;p=openldap diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 4f359a8532..5fe8d148fd 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2015 The OpenLDAP Foundation. + * Copyright 1998-2017 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -723,6 +723,9 @@ static void connection_abandon( Connection *c ) SlapReply rs = {REP_RESULT}; next = LDAP_STAILQ_NEXT( o, o_next ); + /* don't abandon an op twice */ + if ( o->o_abandon ) + continue; op.orn_msgid = o->o_msgid; o->o_abandon = 1; op.o_bd = frontendDB; @@ -1050,6 +1053,13 @@ connection_operation( void *ctx, void *arg_v ) void *memctx_null = NULL; ber_len_t memsiz; + gettimeofday( &op->o_qtime, NULL ); + op->o_qtime.tv_usec -= op->o_tusec; + if ( op->o_qtime.tv_usec < 0 ) { + op->o_qtime.tv_usec += 1000000; + op->o_qtime.tv_sec--; + } + op->o_qtime.tv_sec -= op->o_time; conn_counter_init( op, ctx ); ldap_pvt_thread_mutex_lock( &op->o_counters->sc_mutex ); /* FIXME: returns 0 in case of failure */