Merge pull request #2794 from cesanta/close

handle `Connection: close`
This commit is contained in:
Sergio R. Caprile 2024-06-25 15:07:07 -03:00 committed by GitHub
commit 7028417d88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 0 deletions

View File

@ -3299,6 +3299,13 @@ static void http_cb(struct mg_connection *c, int ev, void *ev_data) {
if (c->is_accepted) c->is_resp = 1; // Start generating response
mg_call(c, MG_EV_HTTP_MSG, &hm); // User handler can clear is_resp
if (c->is_accepted) {
struct mg_str *cc = mg_http_get_header(&hm, "Connection");
if (cc != NULL && mg_strcasecmp(*cc, mg_str("close")) == 0) {
c->is_draining = 1; // honor "Connection: close"
break;
}
}
}
if (ofs > 0) mg_iobuf_del(&c->recv, 0, ofs); // Delete processed data
}

View File

@ -1083,6 +1083,13 @@ static void http_cb(struct mg_connection *c, int ev, void *ev_data) {
if (c->is_accepted) c->is_resp = 1; // Start generating response
mg_call(c, MG_EV_HTTP_MSG, &hm); // User handler can clear is_resp
if (c->is_accepted) {
struct mg_str *cc = mg_http_get_header(&hm, "Connection");
if (cc != NULL && mg_strcasecmp(*cc, mg_str("close")) == 0) {
c->is_draining = 1; // honor "Connection: close"
break;
}
}
}
if (ofs > 0) mg_iobuf_del(&c->recv, 0, ofs); // Delete processed data
}