Don't exit mbedtls_net_poll on interruption of select
If the select UNIX system call is interrupted by a signal handler,
it is not automatically restarted but returns EINTR. This commit
modifies the use of select in mbedtls_net_poll from net_sockets.c
to retry the select call in this case.
diff --git a/library/net_sockets.c b/library/net_sockets.c
index 2d1c108..e63e496 100644
--- a/library/net_sockets.c
+++ b/library/net_sockets.c
@@ -470,8 +470,11 @@
tv.tv_sec = timeout / 1000;
tv.tv_usec = ( timeout % 1000 ) * 1000;
- ret = select( fd + 1, &read_fds, &write_fds, NULL,
- timeout == (uint32_t) -1 ? NULL : &tv );
+ do
+ {
+ ret = select( fd + 1, &read_fds, &write_fds, NULL,
+ timeout == (uint32_t) -1 ? NULL : &tv );
+ } while( ret == EINTR );
if( ret < 0 )
return( MBEDTLS_ERR_NET_POLL_FAILED );