X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fevent_client.c;h=90c5e5dd986619f4f9f5426bea3393133a9cb7c1;hp=37dcb9e46aeda46caacafc57067d201e2c986262;hb=70c486dc2216fb4e3342803080ce6a4204dd8672;hpb=684a509730fe1e131262ddf1f113f01f642949cc diff --git a/citadel/event_client.c b/citadel/event_client.c index 37dcb9e46..90c5e5dd9 100644 --- a/citadel/event_client.c +++ b/citadel/event_client.c @@ -370,7 +370,22 @@ void PostInbound(AsyncIO *IO) case eSendMore: assert(IO->SendDone); IO->NextState = IO->SendDone(IO); - ev_io_start(event_base, &IO->send_event); + switch (IO->NextState) + { + case eSendFile: + case eSendReply: + case eSendMore: + case eReadMessage: + case eReadPayload: + case eReadMore: + case eReadFile: + ev_io_start(event_base, &IO->send_event); + break; + case eDBQuery: + StopClientWatchers(IO, 0); + default: + break; + } break; case eReadPayload: case eReadMore: @@ -1100,10 +1115,13 @@ typedef struct KillOtherSessionContext { eNextState KillTerminate(AsyncIO *IO) { + long id; KillOtherSessionContext *Ctx = (KillOtherSessionContext*)IO->Data; EV_syslog(LOG_DEBUG, "%s Exit\n", __FUNCTION__); + id = IO->ID; FreeAsyncIOContents(IO); memset(Ctx, 0, sizeof(KillOtherSessionContext)); + IO->ID = id; /* just for the case we want to analyze it in a coredump */ free(Ctx); return eAbort;