diff options
-rw-r--r-- | src/clientbase.c | 4 | ||||
-rw-r--r-- | src/server.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/clientbase.c b/src/clientbase.c index 206804f3..cbf99d5a 100644 --- a/src/clientbase.c +++ b/src/clientbase.c @@ -303,8 +303,10 @@ int ci_write(clientbase_t *self, char * msg, ...) if (t == -1) { if ((e = self->cb_error(self->tx, e, (void *)self))) { self->client_state |= CLIENT_ERR; - return e; + } else { + event_add(self->wev, NULL); } + return e; } else { TRACE(TRACE_INFO, "[%p] S > [%ld/%ld:%s]", self, t, self->write_buffer->len, s); diff --git a/src/server.c b/src/server.c index dd757cf2..8eca2604 100644 --- a/src/server.c +++ b/src/server.c @@ -140,8 +140,9 @@ void dm_thread_data_sendmessage(gpointer data) { dm_thread_data *D = (dm_thread_data *)data; ImapSession *session = (ImapSession *)D->session; - if (D->data && session) + if (D->data && session) { ci_write(session->ci, "%s", (char *)D->data); + } } /* |