diff -urNp old/common-src/security-util.c new/common-src/security-util.c --- old/common-src/security-util.c 2013-01-10 13:54:54.000000000 +0100 +++ new/common-src/security-util.c 2018-01-15 14:51:08.051123925 +0100 @@ -511,6 +511,17 @@ tcpm_recv_token( rval = read(fd, ((char *)&rc->netint) + rc->size_header_read, SIZEOF(rc->netint) - rc->size_header_read); if (rval == -1) { + if (0 +#ifdef EAGAIN + || errno == EAGAIN +#endif +#ifdef EWOULDBLOCK + || errno == EWOULDBLOCK +#endif + ) { + g_debug("first read return EAGAIN"); + return -2; + } if (errmsg) *errmsg = newvstrallocf(*errmsg, _("recv error: %s"), strerror(errno)); @@ -594,6 +605,17 @@ tcpm_recv_token( rval = read(fd, rc->buffer + rc->size_buffer_read, (size_t)*size - rc->size_buffer_read); if (rval == -1) { + if (0 +#ifdef EAGAIN + || errno == EAGAIN +#endif +#ifdef EWOULDBLOCK + || errno == EWOULDBLOCK +#endif + ) { + g_debug("second read return EAGAIN"); + return -2; + } if (errmsg) *errmsg = newvstrallocf(*errmsg, _("recv error: %s"), strerror(errno));