diff --git a/mongoose.c b/mongoose.c index 23eb0b3b..e228f6c8 100644 --- a/mongoose.c +++ b/mongoose.c @@ -5362,6 +5362,11 @@ static void mg_ev_handler(struct ns_connection *nc, int ev, void *p) { write_terminating_chunk(conn); } close_local_endpoint(conn); + /* + * MG_POLL callback returned MG_TRUE, + * i.e. data is sent, set corresponding flag + */ + conn->ns_conn->flags |= NSF_FINISHED_SENDING_DATA; } if (conn->endpoint_type == EP_FILE) { diff --git a/mongoose.h b/mongoose.h index a434758d..522e92ad 100644 --- a/mongoose.h +++ b/mongoose.h @@ -60,7 +60,8 @@ struct mg_connection { struct mg_server; // Opaque structure describing server instance enum mg_result { MG_FALSE, MG_TRUE, MG_MORE }; enum mg_event { - MG_POLL = 100, // Callback return value is ignored + MG_POLL = 100, // If callback returns MG_TRUE connection closes + // after all of data is sent MG_CONNECT, // If callback returns MG_FALSE, connect fails MG_AUTH, // If callback returns MG_FALSE, authentication fails MG_REQUEST, // If callback returns MG_FALSE, Mongoose continues with req