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.
pull/4251/head
Kedar Sovani 2018-08-06 11:36:40 +05:30 zatwierdzone przez Vikram Dattu
rodzic acf114895d
commit 87c3decc12
1 zmienionych plików z 0 dodań i 8 usunięć

Wyświetl plik

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