summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libetpan/include/libetpan/mailstream.h1
-rw-r--r--kmicromail/libetpan/tools/mailstream.c2
-rw-r--r--kmicromail/libetpan/tools/mailstream.h3
-rw-r--r--kmicromail/libetpan/tools/mailstream_socket.c13
4 files changed, 14 insertions, 5 deletions
diff --git a/kmicromail/libetpan/include/libetpan/mailstream.h b/kmicromail/libetpan/include/libetpan/mailstream.h
index a4e35cd..ffb5062 100644
--- a/kmicromail/libetpan/include/libetpan/mailstream.h
+++ b/kmicromail/libetpan/include/libetpan/mailstream.h
@@ -35,4 +35,5 @@
#ifndef MAILSTREAM_H
+#define DEFAULT_NETWORK_TIMEOUT 30
#define MAILSTREAM_H
diff --git a/kmicromail/libetpan/tools/mailstream.c b/kmicromail/libetpan/tools/mailstream.c
index 0f55e67..6d1a8cc 100644
--- a/kmicromail/libetpan/tools/mailstream.c
+++ b/kmicromail/libetpan/tools/mailstream.c
@@ -41,5 +41,5 @@
#include <sys/stat.h>
-#define DEFAULT_NETWORK_TIMEOUT 300
+
#ifdef LIBETPAN_MAILSTREAM_DEBUG
diff --git a/kmicromail/libetpan/tools/mailstream.h b/kmicromail/libetpan/tools/mailstream.h
index a4e35cd..8a89a72 100644
--- a/kmicromail/libetpan/tools/mailstream.h
+++ b/kmicromail/libetpan/tools/mailstream.h
@@ -37,5 +37,6 @@
#define MAILSTREAM_H
-
+//dont forget to change the value in <libetpan/mailstream.h> as well
+#define DEFAULT_NETWORK_TIMEOUT 30
#include <sys/time.h>
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
@@ -170,6 +170,9 @@ static ssize_t mailstream_low_socket_read(mailstream_low * s,
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))
@@ -181,5 +184,5 @@ static ssize_t mailstream_low_socket_read(mailstream_low * s,
//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)
@@ -201,6 +204,10 @@ static ssize_t mailstream_low_socket_write(mailstream_low * s,
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))