aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/connection_https.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/connection_https.c')
-rw-r--r--src/microhttpd/connection_https.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/microhttpd/connection_https.c b/src/microhttpd/connection_https.c
index 3d4b0bdb..0060c59a 100644
--- a/src/microhttpd/connection_https.c
+++ b/src/microhttpd/connection_https.c
@@ -73,9 +73,28 @@ recv_tls_adapter (struct MHD_Connection *connection,
73 } 73 }
74 if (res < 0) 74 if (res < 0)
75 { 75 {
76 /* Likely 'GNUTLS_E_INVALID_SESSION' (client communication
77 disrupted); interpret as a hard error */
78 connection->tls_read_ready = false; 76 connection->tls_read_ready = false;
77 if ( (GNUTLS_E_DECRYPTION_FAILED == res) ||
78 (GNUTLS_E_INVALID_SESSION == res) ||
79 (GNUTLS_E_DECOMPRESSION_FAILED == res) ||
80 (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER == res) ||
81 (GNUTLS_E_UNSUPPORTED_VERSION_PACKET == res) ||
82 (GNUTLS_E_UNEXPECTED_PACKET_LENGTH == res) ||
83 (GNUTLS_E_UNEXPECTED_PACKET == res) ||
84 (GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET == res) ||
85 (GNUTLS_E_EXPIRED == res) ||
86 (GNUTLS_E_REHANDSHAKE == res) )
87 return MHD_ERR_TLS_;
88 if ( (GNUTLS_E_PULL_ERROR == res) ||
89 (GNUTLS_E_INTERNAL_ERROR == res) ||
90 (GNUTLS_E_CRYPTODEV_IOCTL_ERROR == res) ||
91 (GNUTLS_E_CRYPTODEV_DEVICE_ERROR == res) )
92 return MHD_ERR_PIPE_;
93 if (GNUTLS_E_PREMATURE_TERMINATION == res)
94 return MHD_ERR_CONNRESET_;
95 if (GNUTLS_E_MEMORY_ERROR == res)
96 return MHD_ERR_NOMEM_;
97 /* Treat any other error as a hard error. */
79 return MHD_ERR_NOTCONN_; 98 return MHD_ERR_NOTCONN_;
80 } 99 }
81 100