diff --git a/wsockd/wsockd.c b/wsockd/wsockd.c index 5780ffc73..65a03e5e8 100644 --- a/wsockd/wsockd.c +++ b/wsockd/wsockd.c @@ -181,6 +181,7 @@ strcasestr(const char *s, const char *find) static void close_conn(conn_t * conn, int wait_plain, const char *fmt, ...); static void conn_mod_read_cb(rb_fde_t *fd, void *data); static void conn_plain_read_cb(rb_fde_t *fd, void *data); +static void conn_plain_process_recvq(conn_t *conn); #define FLAG_CORK 0x01 #define FLAG_DEAD 0x02 @@ -459,6 +460,9 @@ close_conn(conn_t * conn, int wait_plain, const char *fmt, ...) if(IsDead(conn)) return; + if (IsKeyed(conn)) + conn_plain_process_recvq(conn); + rb_rawbuf_flush(conn->modbuf_out, conn->mod_fd); rb_linebuf_flush(conn->plain_fd, &conn->plainbuf_out); rb_close(conn->mod_fd);