X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fevent_client.c;h=bd0b8a105be45f9cda7a142a32860a8331b36052;hb=fd8fe6104cd95ec30d9dfd4d13be164a9dc4d71d;hp=774d3e86cecf506087eb2de1b87c5a7c7b17880c;hpb=879665a76c59cea647ce6b76758724e2e7fcc06b;p=citadel.git diff --git a/citadel/event_client.c b/citadel/event_client.c index 774d3e86c..bd0b8a105 100644 --- a/citadel/event_client.c +++ b/citadel/event_client.c @@ -585,10 +585,14 @@ IO_send_callback(struct ev_loop *loop, ev_io *watcher, int revents) } else if (rc < 0) { if (errno != EAGAIN) { + StopClientWatchers(IO); EV_syslog(LOG_DEBUG, "EVENT: Socket Invalid! [%d] [%s] [%d]\n", errno, strerror(errno), IO->SendBuf.fd); - IO_Timeout_callback(loop, &IO->rw_timeout, revents); + StrBufPrintf(IO->ErrMsg, + "Socket Invalid! [%s]", + strerror(errno)); + SetNextTimeout(IO, 0.0); } } /* else : must write more. */ @@ -808,7 +812,7 @@ IO_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents) if (nbytes > 0) { HandleInbound(IO); } else if (nbytes == 0) { - IO_Timeout_callback(loop, &IO->rw_timeout, revents); + SetNextTimeout(IO, 0.0); return; } else if (nbytes == -1) { if (errno != EAGAIN) { @@ -817,7 +821,10 @@ IO_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents) EV_syslog(LOG_DEBUG, "EVENT: Socket Invalid! [%d] [%s] [%d]\n", errno, strerror(errno), IO->SendBuf.fd); - ShutDownCLient(IO); + StrBufPrintf(IO->ErrMsg, + "Socket Invalid! [%s]", + strerror(errno)); + SetNextTimeout(IO, 0.0); } return; }