diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-08-28 18:39:43 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-08-28 19:57:49 +0300 |
commit | eea4191dbfe090237da49c01fb3b9924a1216621 (patch) | |
tree | f6c19fe92b053b8c31112be14340720beb836281 | |
parent | 54602578633b24e84b0caf5be588cdeda8a3bd5c (diff) | |
download | mailutils-eea4191dbfe090237da49c01fb3b9924a1216621.tar.gz mailutils-eea4191dbfe090237da49c01fb3b9924a1216621.tar.bz2 |
pop3d: bugfixes.
* include/mailutils/message.h (mu_message_set_stream): Mark as deprecated.
* pop3d/retr.c (pop3d_retr): Rewind the stream obtained from
mu_message_get_stream.
* pop3d/top.c (pop3d_top): Rewind the streams obtained from
mu_body_get_stream and mu_header_get_stream.
-rw-r--r-- | include/mailutils/message.h | 4 | ||||
-rw-r--r-- | pop3d/retr.c | 5 | ||||
-rw-r--r-- | pop3d/top.c | 8 |
3 files changed, 13 insertions, 4 deletions
diff --git a/include/mailutils/message.h b/include/mailutils/message.h index fcc4e5dbe..8a2416ff5 100644 --- a/include/mailutils/message.h +++ b/include/mailutils/message.h @@ -55,7 +55,9 @@ extern int mu_message_set_body (mu_message_t, mu_body_t, void *); extern int mu_message_get_stream (mu_message_t, mu_stream_t *) __attribute__((deprecated)); extern int mu_message_get_streamref (mu_message_t, mu_stream_t *); -extern int mu_message_set_stream (mu_message_t, mu_stream_t, void *); + +extern int mu_message_set_stream (mu_message_t, mu_stream_t, void *) + __attribute__((deprecated)); extern int mu_message_get_attribute (mu_message_t, mu_attribute_t *); extern int mu_message_set_attribute (mu_message_t, mu_attribute_t, void *); diff --git a/pop3d/retr.c b/pop3d/retr.c index 8d3030de8..c5e44f501 100644 --- a/pop3d/retr.c +++ b/pop3d/retr.c @@ -45,7 +45,10 @@ pop3d_retr (char *arg) return ERR_MESG_DELE; /* FIXME: Use crlf filter + mu_stream_copy instead of the loop below */ - mu_message_get_stream (msg, &stream); + if (mu_message_get_stream (msg, &stream) + || mu_stream_seek (stream, 0, MU_SEEK_SET, NULL)) + return ERR_UNKNOWN; + pop3d_outf ("+OK\r\n"); prev_nl = 1; diff --git a/pop3d/top.c b/pop3d/top.c index 0506a6429..c51356d84 100644 --- a/pop3d/top.c +++ b/pop3d/top.c @@ -60,7 +60,9 @@ pop3d_top (char *arg) /* Header. */ mu_message_get_header (msg, &hdr); /* FIXME: Use crlf filter + mu_stream_copy instead of the below loop */ - mu_header_get_stream (hdr, &stream); + if (mu_header_get_stream (hdr, &stream) + || mu_stream_seek (stream, 0, MU_SEEK_SET, NULL)) + return ERR_UNKNOWN; n = 0; while (mu_stream_readline (stream, buf, sizeof(buf), &n) == 0 && n > 0) @@ -82,7 +84,9 @@ pop3d_top (char *arg) mu_message_get_body (msg, &body); /* FIXME: Use the crlf filter + mu_stream_copy */ - mu_body_get_stream (body, &stream); + if (mu_body_get_stream (body, &stream) + || mu_stream_seek (stream, 0, MU_SEEK_SET, NULL)) + return ERR_UNKNOWN; n = 0; while (mu_stream_readline (stream, buf, sizeof(buf), &n) == 0 && n > 0 && lines > 0) |