Remove check for would_block in mbedtls

Basically, in the portability layer, it is checked if the socket is
NON-block, and if not, then even the EAGAIN and EWOULDBLOCK errors are
diverted to a RECV error. This causes a problem for sockets with
receive timeouts set. When such a timeout is set, the condition for
NON_BLOCK isn't met and hence a hard error is returned.

Searching for EAGAIN and EWOULDBLOCK in lwip returns only 3 results
(accept, recvfrom, close) and all of them look to be genuine cases for
EWOULDBLOCK. So removing this check to make receive timeout with TLS
work.
This commit is contained in:
Kedar Sovani 2018-08-06 11:36:40 +05:30 committed by Vikram Dattu
parent 3e3ce3da81
commit 8f048ffddc

View file

@ -212,13 +212,6 @@ static int net_would_block( const mbedtls_net_context *ctx, int *errout )
*errout = error;
}
/*
* Never return 'WOULD BLOCK' on a non-blocking socket
*/
if ( ( fcntl( ctx->fd, F_GETFL, 0) & O_NONBLOCK ) != O_NONBLOCK ) {
return ( 0 );
}
switch ( error ) {
#if defined EAGAIN
case EAGAIN: