summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clientbase.c4
-rw-r--r--src/server.c3
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);
+ }
}
/*