make FIN wait for TLS drain

This commit is contained in:
Sergio R. Caprile committed 2026-08-31 10:03:27 -03:00
1 parent 6093ac12a0
commit 5a317e81d9
10 files changed
+120 -26

No files matched your search

+7 -4
View File
@@ -249,17 +249,20 @@ long mg_tls_send(struct mg_connection *c, const void *buf, size_t len) {
return n;
}
void mg_tls_flush(struct mg_connection *c) {
long mg_tls_flush(struct mg_connection *c) {
struct mg_tls *tls = (struct mg_tls *) c->tls;
long n = 0;
if (c->is_tls_throttled && c->is_draining) {
long n =
mbedtls_ssl_write(&tls->ssl, tls->throttled_buf, tls->throttled_len);
n = mbedtls_ssl_write(&tls->ssl, tls->throttled_buf, tls->throttled_len);
#if defined(MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET)
if (n == MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET) return;
if (n == MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET) return MG_IO_WAIT;
#endif
c->is_tls_throttled =
(n == MBEDTLS_ERR_SSL_WANT_READ || n == MBEDTLS_ERR_SSL_WANT_WRITE);
if (c->is_tls_throttled) return MG_IO_WAIT;
if (n <= 0) return MG_IO_ERR;
}
return 0;
}
void mg_tls_ctx_init(struct mg_mgr *mgr) {