mbedtls: Remove WIN32 #ifdef sections, use socket's SO_ERROR flag over errno when possible
This commit is contained in:
		
							parent
							
								
									367c17d1cf
								
							
						
					
					
						commit
						d5221e7efa
					
				
					 1 changed files with 17 additions and 37 deletions
				
			
		| 
						 | 
					@ -217,18 +217,14 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( defined(_WIN32) || defined(_WIN32_WCE) ) && !defined(EFIX64) && \
 | 
					static int socket_errno( const mbedtls_net_context *ctx )
 | 
				
			||||||
    !defined(EFI32)
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Check if the requested operation would be blocking on a non-blocking socket
 | 
					 | 
				
			||||||
 * and thus 'failed' with a negative return value.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
static int net_would_block( const mbedtls_net_context *ctx )
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ((void) ctx);
 | 
					    int sock_errno = 0;
 | 
				
			||||||
    return( WSAGetLastError() == WSAEWOULDBLOCK );
 | 
					    u32_t optlen = sizeof(sock_errno);
 | 
				
			||||||
 | 
					    lwip_getsockopt(ctx->fd, SOL_SOCKET, SO_ERROR, &sock_errno, &optlen);
 | 
				
			||||||
 | 
					    return sock_errno;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Check if the requested operation would be blocking on a non-blocking socket
 | 
					 * Check if the requested operation would be blocking on a non-blocking socket
 | 
				
			||||||
 * and thus 'failed' with a negative return value.
 | 
					 * and thus 'failed' with a negative return value.
 | 
				
			||||||
| 
						 | 
					@ -243,7 +239,8 @@ static int net_would_block( const mbedtls_net_context *ctx )
 | 
				
			||||||
    if( ( fcntl( ctx->fd, F_GETFL, 0) & O_NONBLOCK ) != O_NONBLOCK )
 | 
					    if( ( fcntl( ctx->fd, F_GETFL, 0) & O_NONBLOCK ) != O_NONBLOCK )
 | 
				
			||||||
        return( 0 );
 | 
					        return( 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch( errno )
 | 
					
 | 
				
			||||||
 | 
					    switch( socket_errno(ctx) )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#if defined EAGAIN
 | 
					#if defined EAGAIN
 | 
				
			||||||
        case EAGAIN:
 | 
					        case EAGAIN:
 | 
				
			||||||
| 
						 | 
					@ -255,7 +252,6 @@ static int net_would_block( const mbedtls_net_context *ctx )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return( 0 );
 | 
					    return( 0 );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif /* ( _WIN32 || _WIN32_WCE ) && !EFIX64 && !EFI32 */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Accept a connection from a remote client
 | 
					 * Accept a connection from a remote client
 | 
				
			||||||
| 
						 | 
					@ -401,9 +397,7 @@ void mbedtls_net_usleep( unsigned long usec )
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/* Read at most 'len' characters */
 | 
				
			||||||
 * Read at most 'len' characters
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len )
 | 
					int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int ret;
 | 
					    int ret;
 | 
				
			||||||
| 
						 | 
					@ -419,17 +413,13 @@ int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len )
 | 
				
			||||||
        if( net_would_block( ctx ) != 0 )
 | 
					        if( net_would_block( ctx ) != 0 )
 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
					            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( defined(_WIN32) || defined(_WIN32_WCE) ) && !defined(EFIX64) && \
 | 
					        int sock_errno = socket_errno(ctx);
 | 
				
			||||||
    !defined(EFI32)
 | 
					
 | 
				
			||||||
        if( WSAGetLastError() == WSAECONNRESET )
 | 
					        if( sock_errno == EPIPE || sock_errno == ECONNRESET )
 | 
				
			||||||
            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
        if( errno == EPIPE || errno == ECONNRESET )
 | 
					 | 
				
			||||||
            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
					            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if( errno == EINTR )
 | 
					        if( sock_errno == EINTR )
 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
					            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return( MBEDTLS_ERR_NET_RECV_FAILED );
 | 
					        return( MBEDTLS_ERR_NET_RECV_FAILED );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -465,14 +455,8 @@ int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, size_t len,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if( ret < 0 )
 | 
					    if( ret < 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#if ( defined(_WIN32) || defined(_WIN32_WCE) ) && !defined(EFIX64) && \
 | 
					 | 
				
			||||||
    !defined(EFI32)
 | 
					 | 
				
			||||||
        if( WSAGetLastError() == WSAEINTR )
 | 
					 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
        if( errno == EINTR )
 | 
					        if( errno == EINTR )
 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
					            return( MBEDTLS_ERR_SSL_WANT_READ );
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return( MBEDTLS_ERR_NET_RECV_FAILED );
 | 
					        return( MBEDTLS_ERR_NET_RECV_FAILED );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -499,17 +483,13 @@ int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len )
 | 
				
			||||||
        if( net_would_block( ctx ) != 0 )
 | 
					        if( net_would_block( ctx ) != 0 )
 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_WRITE );
 | 
					            return( MBEDTLS_ERR_SSL_WANT_WRITE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( defined(_WIN32) || defined(_WIN32_WCE) ) && !defined(EFIX64) && \
 | 
					        int sock_errno = socket_errno(ctx);
 | 
				
			||||||
    !defined(EFI32)
 | 
					
 | 
				
			||||||
        if( WSAGetLastError() == WSAECONNRESET )
 | 
					        if( sock_errno == EPIPE || sock_errno == ECONNRESET )
 | 
				
			||||||
            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
        if( errno == EPIPE || errno == ECONNRESET )
 | 
					 | 
				
			||||||
            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
					            return( MBEDTLS_ERR_NET_CONN_RESET );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if( errno == EINTR )
 | 
					        if( sock_errno == EINTR )
 | 
				
			||||||
            return( MBEDTLS_ERR_SSL_WANT_WRITE );
 | 
					            return( MBEDTLS_ERR_SSL_WANT_WRITE );
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return( MBEDTLS_ERR_NET_SEND_FAILED );
 | 
					        return( MBEDTLS_ERR_NET_SEND_FAILED );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue