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:
if (nbytes > 0) {
HandleInbound(IO);
} else if (nbytes == 0) {
- SetNextTimeout(IO, 0.0);
+ StopClientWatchers(IO, 1);
+ SetNextTimeout(IO, 0.01);
return;
} else if (nbytes == -1) {
if (errno != EAGAIN) {