summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/tools/mailstream_socket.c
Side-by-side diff
Diffstat (limited to 'kmicromail/libetpan/tools/mailstream_socket.c') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/tools/mailstream_socket.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/kmicromail/libetpan/tools/mailstream_socket.c b/kmicromail/libetpan/tools/mailstream_socket.c
index 29e50e1..04a6f48 100644
--- a/kmicromail/libetpan/tools/mailstream_socket.c
+++ b/kmicromail/libetpan/tools/mailstream_socket.c
@@ -169,8 +169,11 @@ static ssize_t mailstream_low_socket_read(mailstream_low * s,
FD_SET(socket_data->fd, &fds_read);
FD_ZERO(&fds_excp);
FD_SET(socket_data->fd, &fds_excp);
+ // LUTZ for safety I insert here a max val as well
+ if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT )
+ timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT;
r = select(socket_data->fd + 1, &fds_read, NULL, &fds_excp, &timeout);
- if (r == 0)
+ if (r < 1 )
return -1;
if (FD_ISSET(socket_data->fd, &fds_excp))
return -1;
@@ -180,7 +183,7 @@ static ssize_t mailstream_low_socket_read(mailstream_low * s,
return recv(socket_data->fd,buf,count,MSG_NOSIGNAL);
//return read(socket_data->fd, buf, count);
}
-
+#include <stdio.h>
static ssize_t mailstream_low_socket_write(mailstream_low * s,
const void * buf, size_t count)
{
@@ -200,8 +203,12 @@ static ssize_t mailstream_low_socket_write(mailstream_low * s,
FD_SET(socket_data->fd, &fds_write);
FD_ZERO(&fds_excp);
FD_SET(socket_data->fd, &fds_excp);
+ // LUTZ next line blocks sometimes
+ if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT )
+ timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT;
+ fprintf(stderr,"fd %d to secs %d \n", socket_data->fd, timeout.tv_sec );
r = select(socket_data->fd + 1, NULL, &fds_write, &fds_excp, &timeout);
- if (r == 0)
+ if (r < 1)
return -1;
if (FD_ISSET(socket_data->fd, &fds_excp))
return -1;