aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--driver.c4
-rw-r--r--imap.c3
-rw-r--r--pop3.c2
4 files changed, 6 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index de6e58a3..fd552e44 100644
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,7 @@ fetchmail-4.2.9 ()
existing Received line and *after* any From headers shipped up by the
server. This fixes odd problems with some sensitive sendmails.
* Compuserve RPA authentication support.
+* Fixed a bug that screwed up message size queries on some IMAP2bis servers.
There are 285 people on the fetchmail-friends list.
diff --git a/driver.c b/driver.c
index c0af504f..c548fafd 100644
--- a/driver.c
+++ b/driver.c
@@ -1642,7 +1642,11 @@ const struct method *proto; /* protocol method table */
*/
if (proto->getsizes)
{
+ int i;
+
msgsizes = (int *)alloca(sizeof(int) * count);
+ for (i = 0; i < count; i++)
+ msgsizes[i] = -1;
ok = (proto->getsizes)(sock, count, msgsizes);
if (ok != 0)
diff --git a/imap.c b/imap.c
index cb3437a8..2b25f866 100644
--- a/imap.c
+++ b/imap.c
@@ -463,6 +463,7 @@ static int imap_getsizes(int sock, int count, int *sizes)
/* capture the sizes of all messages */
{
char buf [POPBUFSIZE+1];
+ int i;
gen_send(sock, "FETCH 1:%d RFC822.SIZE", count);
for (;;)
@@ -475,8 +476,6 @@ static int imap_getsizes(int sock, int count, int *sizes)
break;
else if (sscanf(buf, "* %d FETCH (RFC822.SIZE %d)", &num, &size) == 2)
sizes[num - 1] = size;
- else
- sizes[num - 1] = -1;
}
return(PS_SUCCESS);
diff --git a/pop3.c b/pop3.c
index 59d7f9e1..356feb36 100644
--- a/pop3.c
+++ b/pop3.c
@@ -434,8 +434,6 @@ static int pop3_getsizes(int sock, int count, int *sizes)
break;
else if (sscanf(buf, "%d %d", &num, &size) == 2)
sizes[num - 1] = size;
- else
- sizes[num - 1] = -1;
}
return(ok);