diff options
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r-- | src/microhttpd/daemon.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index ed4cd5ca..98b93ae5 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c | |||
@@ -2535,10 +2535,26 @@ new_connection_prepare_ (struct MHD_Daemon *daemon, | |||
2535 | #endif | 2535 | #endif |
2536 | connection->tls_state = MHD_TLS_CONN_INIT; | 2536 | connection->tls_state = MHD_TLS_CONN_INIT; |
2537 | MHD_set_https_callbacks (connection); | 2537 | MHD_set_https_callbacks (connection); |
2538 | gnutls_init (&connection->tls_session, | 2538 | if ((GNUTLS_E_SUCCESS != gnutls_init (&connection->tls_session, flags)) || |
2539 | flags); | 2539 | (GNUTLS_E_SUCCESS != gnutls_priority_set (connection->tls_session, |
2540 | gnutls_priority_set (connection->tls_session, | 2540 | daemon->priority_cache))) |
2541 | daemon->priority_cache); | 2541 | { |
2542 | gnutls_deinit (connection->tls_session); | ||
2543 | MHD_socket_close_chk_ (client_socket); | ||
2544 | MHD_ip_limit_del (daemon, | ||
2545 | addr, | ||
2546 | addrlen); | ||
2547 | free (connection->addr); | ||
2548 | free (connection); | ||
2549 | #ifdef HAVE_MESSAGES | ||
2550 | MHD_DLOG (connection->daemon, | ||
2551 | _ ("Failed to initialise TLS session.\n")); | ||
2552 | #endif | ||
2553 | #if EPROTO | ||
2554 | errno = EPROTO; | ||
2555 | #endif | ||
2556 | return MHD_NO; | ||
2557 | } | ||
2542 | gnutls_session_set_ptr (connection->tls_session, | 2558 | gnutls_session_set_ptr (connection->tls_session, |
2543 | connection); | 2559 | connection); |
2544 | switch (daemon->cred_type) | 2560 | switch (daemon->cred_type) |