mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-07-29 11:41:15 +03:00
- Changed behaviour of net_recv(), ssl_fetch_input() and ssl_read(). net_recv() now returns 0 on EOF instead of POLARSSL_ERR_NET_CONN_RESET. ssl_fetch_input() returns POLARSSL_ERR_SSL_CONN_EOF on an EOF from its f_recv() function. ssl_read() returns 0 if a POLARSSL_ERR_SSL_CONN_EOF is received after the handshake.
- Network functions now return POLARSSL_ERR_NET_WANT_READ or POLARSSL_ERR_NET_WANT_WRITE instead of the ambiguous POLARSSL_ERR_NET_TRY_AGAIN
This commit is contained in:
@ -71,7 +71,7 @@
|
||||
#include "polarssl/rsa.h"
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_C)
|
||||
#if defined(POLARSSL_SSL_TLS_C)
|
||||
#include "polarssl/ssl.h"
|
||||
#endif
|
||||
|
||||
@ -162,7 +162,7 @@ void error_strerror( int ret, char *buf, size_t buflen )
|
||||
snprintf( buf, buflen, "RSA - The random generator failed to generate non-zeros" );
|
||||
#endif /* POLARSSL_RSA_C */
|
||||
|
||||
#if defined(POLARSSL_SSL_C)
|
||||
#if defined(POLARSSL_SSL_TLS_C)
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE) )
|
||||
snprintf( buf, buflen, "SSL - The requested feature is not available" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_BAD_INPUT_DATA) )
|
||||
@ -171,8 +171,8 @@ void error_strerror( int ret, char *buf, size_t buflen )
|
||||
snprintf( buf, buflen, "SSL - Verification of the message MAC failed" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_INVALID_RECORD) )
|
||||
snprintf( buf, buflen, "SSL - An invalid SSL record was received" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_INVALID_MODULUS_SIZE) )
|
||||
snprintf( buf, buflen, "SSL - An invalid modulus size was received" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_CONN_EOF) )
|
||||
snprintf( buf, buflen, "SSL - The connection indicated an EOF" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_UNKNOWN_CIPHER) )
|
||||
snprintf( buf, buflen, "SSL - An unknown cipher was received" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_NO_CIPHER_CHOSEN) )
|
||||
@ -221,7 +221,7 @@ void error_strerror( int ret, char *buf, size_t buflen )
|
||||
snprintf( buf, buflen, "SSL - Processing of the ChangeCipherSpec handshake message failed" );
|
||||
if( use_ret == -(POLARSSL_ERR_SSL_BAD_HS_FINISHED) )
|
||||
snprintf( buf, buflen, "SSL - Processing of the Finished handshake message failed" );
|
||||
#endif /* POLARSSL_SSL_C */
|
||||
#endif /* POLARSSL_SSL_TLS_C */
|
||||
|
||||
#if defined(POLARSSL_X509_PARSE_C)
|
||||
if( use_ret == -(POLARSSL_ERR_X509_FEATURE_UNAVAILABLE) )
|
||||
@ -355,8 +355,10 @@ void error_strerror( int ret, char *buf, size_t buflen )
|
||||
snprintf( buf, buflen, "NET - Sending information through the socket failed" );
|
||||
if( use_ret == -(POLARSSL_ERR_NET_CONN_RESET) )
|
||||
snprintf( buf, buflen, "NET - Connection was reset by peer" );
|
||||
if( use_ret == -(POLARSSL_ERR_NET_TRY_AGAIN) )
|
||||
snprintf( buf, buflen, "NET - Connection was busy, try again" );
|
||||
if( use_ret == -(POLARSSL_ERR_NET_WANT_READ) )
|
||||
snprintf( buf, buflen, "NET - Connection requires a read call" );
|
||||
if( use_ret == -(POLARSSL_ERR_NET_WANT_WRITE) )
|
||||
snprintf( buf, buflen, "NET - Connection requires a write call" );
|
||||
#endif /* POLARSSL_NET_C */
|
||||
|
||||
#if defined(POLARSSL_PADLOCK_C)
|
||||
|
@ -239,7 +239,7 @@ int net_accept( int bind_fd, int *client_fd, void *client_ip )
|
||||
if( *client_fd < 0 )
|
||||
{
|
||||
if( net_is_blocking() != 0 )
|
||||
return( POLARSSL_ERR_NET_TRY_AGAIN );
|
||||
return( POLARSSL_ERR_NET_WANT_READ );
|
||||
|
||||
return( POLARSSL_ERR_NET_ACCEPT_FAILED );
|
||||
}
|
||||
@ -292,13 +292,10 @@ int net_recv( void *ctx, unsigned char *buf, size_t len )
|
||||
{
|
||||
int ret = read( *((int *) ctx), buf, len );
|
||||
|
||||
if( len > 0 && ret == 0 )
|
||||
return( POLARSSL_ERR_NET_CONN_RESET );
|
||||
|
||||
if( ret < 0 )
|
||||
{
|
||||
if( net_is_blocking() != 0 )
|
||||
return( POLARSSL_ERR_NET_TRY_AGAIN );
|
||||
return( POLARSSL_ERR_NET_WANT_READ );
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN32_WCE)
|
||||
if( WSAGetLastError() == WSAECONNRESET )
|
||||
@ -308,7 +305,7 @@ int net_recv( void *ctx, unsigned char *buf, size_t len )
|
||||
return( POLARSSL_ERR_NET_CONN_RESET );
|
||||
|
||||
if( errno == EINTR )
|
||||
return( POLARSSL_ERR_NET_TRY_AGAIN );
|
||||
return( POLARSSL_ERR_NET_WANT_READ );
|
||||
#endif
|
||||
|
||||
return( POLARSSL_ERR_NET_RECV_FAILED );
|
||||
@ -327,7 +324,7 @@ int net_send( void *ctx, unsigned char *buf, size_t len )
|
||||
if( ret < 0 )
|
||||
{
|
||||
if( net_is_blocking() != 0 )
|
||||
return( POLARSSL_ERR_NET_TRY_AGAIN );
|
||||
return( POLARSSL_ERR_NET_WANT_WRITE );
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN32_WCE)
|
||||
if( WSAGetLastError() == WSAECONNRESET )
|
||||
@ -337,7 +334,7 @@ int net_send( void *ctx, unsigned char *buf, size_t len )
|
||||
return( POLARSSL_ERR_NET_CONN_RESET );
|
||||
|
||||
if( errno == EINTR )
|
||||
return( POLARSSL_ERR_NET_TRY_AGAIN );
|
||||
return( POLARSSL_ERR_NET_WANT_WRITE );
|
||||
#endif
|
||||
|
||||
return( POLARSSL_ERR_NET_SEND_FAILED );
|
||||
|
@ -878,6 +878,9 @@ int ssl_fetch_input( ssl_context *ssl, size_t nb_want )
|
||||
ssl->in_left, nb_want ) );
|
||||
SSL_DEBUG_RET( 2, "ssl->f_recv", ret );
|
||||
|
||||
if( ret == 0 )
|
||||
return( POLARSSL_ERR_SSL_CONN_EOF );
|
||||
|
||||
if( ret < 0 )
|
||||
return( ret );
|
||||
|
||||
@ -2092,6 +2095,9 @@ int ssl_read( ssl_context *ssl, unsigned char *buf, size_t len )
|
||||
{
|
||||
if( ( ret = ssl_read_record( ssl ) ) != 0 )
|
||||
{
|
||||
if( ret == POLARSSL_ERR_SSL_CONN_EOF )
|
||||
return( 0 );
|
||||
|
||||
SSL_DEBUG_RET( 1, "ssl_read_record", ret );
|
||||
return( ret );
|
||||
}
|
||||
@ -2104,6 +2110,9 @@ int ssl_read( ssl_context *ssl, unsigned char *buf, size_t len )
|
||||
*/
|
||||
if( ( ret = ssl_read_record( ssl ) ) != 0 )
|
||||
{
|
||||
if( ret == POLARSSL_ERR_SSL_CONN_EOF )
|
||||
return( 0 );
|
||||
|
||||
SSL_DEBUG_RET( 1, "ssl_read_record", ret );
|
||||
return( ret );
|
||||
}
|
||||
|
Reference in New Issue
Block a user