X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=ssl.c;h=067e7e0f229663dab3e6801d6a6eaf8efdb153da;hp=56360fc8937fd4e8016654eef6bf9cacc7142d96;hb=3368a380bd6299439d3f4f8298376f79c082530e;hpb=c942d2949825d2afb5ac4f8d18e27dc5bdb59482 diff --git a/ssl.c b/ssl.c index 56360fc8..067e7e0f 100644 --- a/ssl.c +++ b/ssl.c @@ -6,7 +6,7 @@ * creating, using and closing TLS/SSL connections. * * Copyright : Written by and Copyright (c) 2017 Vaclav Svec. FIT CVUT. - * Copyright (C) 2018-2019 by Fabian Keil + * Copyright (C) 2018-2020 by Fabian Keil * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General @@ -229,6 +229,8 @@ extern int ssl_send_data(mbedtls_ssl_context *ssl, const unsigned char *buf, siz send_len = (int)max_fragment_size; } + log_error(LOG_LEVEL_WRITING, "TLS: %N", send_len, buf+pos); + /* * Sending one part of the buffer */ @@ -267,8 +269,8 @@ extern int ssl_send_data(mbedtls_ssl_context *ssl, const unsigned char *buf, siz * 2 : buf = Pointer to buffer where data will be written * 3 : max_length = Maximum number of bytes to read * - * Returns : Number of bytes read, 0 for EOF, or negative - * value on error. + * Returns : Number of bytes read, 0 for EOF, or -1 + * on error. * *********************************************************************/ extern int ssl_recv_data(mbedtls_ssl_context *ssl, unsigned char *buf, size_t max_length) @@ -289,11 +291,21 @@ extern int ssl_recv_data(mbedtls_ssl_context *ssl, unsigned char *buf, size_t ma { char err_buf[ERROR_BUF_SIZE]; + if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) + { + log_error(LOG_LEVEL_CONNECT, + "The peer notified us that the connection is going to be closed"); + return 0; + } mbedtls_strerror(ret, err_buf, sizeof(err_buf)); log_error(LOG_LEVEL_ERROR, "Receiving data over TLS/SSL failed: %s", err_buf); + + return -1; } + log_error(LOG_LEVEL_RECEIVED, "TLS: %N", ret, buf); + return ret; } @@ -790,7 +802,7 @@ extern int create_server_ssl_connection(struct client_state *csp) * Handshake with server */ log_error(LOG_LEVEL_CONNECT, - "Performing the TLS/SSL handshake with server"); + "Performing the TLS/SSL handshake with the server"); while ((ret = mbedtls_ssl_handshake(&(csp->mbedtls_server_attr.ssl))) != 0) { @@ -895,7 +907,7 @@ static void free_server_ssl_structures(struct client_state *csp) * function, we change fd to -1, which is the same what does * rest of mbedtls_net_free function. */ - csp->mbedtls_client_attr.socket_fd.fd = -1; + csp->mbedtls_server_attr.socket_fd.fd = -1; mbedtls_x509_crt_free(&(csp->mbedtls_server_attr.ca_cert)); mbedtls_ssl_free(&(csp->mbedtls_server_attr.ssl)); @@ -1534,7 +1546,7 @@ exit: * * Function : make_certs_path * - * Description : Creates path to file from three pieces. This fuction + * Description : Creates path to file from three pieces. This function * takes parameters and puts them in one new mallocated * char * in correct order. Returned variable must be freed * by caller. This function is mainly used for creating