diff --git a/mongoose.c b/mongoose.c index 82b27ddbadfc900d6d466886bab60e3b9c78cd85..b75296856a5f42a534148f13eca9ae84ad14f77d 100644 --- a/mongoose.c +++ b/mongoose.c @@ -2712,6 +2712,12 @@ size_t mg_websocket_write(struct mg_connection* conn, int opcode, free(copy); } + // If we send closing frame, schedule a connection to be closed after + // data is drained to the client. + if (opcode == WEBSOCKET_OPCODE_CONNECTION_CLOSE) { + MG_CONN_2_CONN(conn)->ns_conn->flags |= NSF_FINISHED_SENDING_DATA; + } + return MG_CONN_2_CONN(conn)->ns_conn->send_iobuf.len; }