From b0f237fbd55624f6eb5006aaaab85da445098a3e Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 23 Sep 1997 21:02:04 +0000 Subject: Make the X-IMAP check independent of protocol. svn path=/trunk/; revision=1395 --- driver.c | 21 ++++++++++++++++++--- etrn.c | 1 - fetchmail.h | 1 - 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/driver.c b/driver.c index 592272b1..549471b1 100644 --- a/driver.c +++ b/driver.c @@ -586,9 +586,24 @@ int num; /* index of message */ break; } - /* maybe this is a special message that holds mailbox annotations? */ - if (protocol->retain_hdr && protocol->retain_hdr(num, line)) - return(PS_RETAINED); + /* + * The University of Washington IMAP server (the reference + * implementation of IMAP4 written by Mark Crispin) relies + * on being able to keep base-UID information in a special + * message at the head of the mailbox. This message should + * neither be deleted nor forwarded. + */ +#ifdef POP2_ENABLE + /* + * We disable this check under POP2 because there's no way to + * prevent deletion of the message. So at least we ought to + * forward it to the user so he or she will have some clue + * that things have gone awry. + */ + if (protocol != pop2) +#endif /* POP2_ENABLE */ + if (num == 1 && !strncasecmp(line, "X-IMAP:", 7)) + return(PS_RETAINED); /* * This code prevents fetchmail from becoming an accessory after diff --git a/etrn.c b/etrn.c index d5c6f432..59ce2fee 100644 --- a/etrn.c +++ b/etrn.c @@ -120,7 +120,6 @@ const static struct method etrn = NULL, /* no way to fetch body */ NULL, /* no message trailer */ NULL, /* how to delete a message */ - NULL, /* no retained-header check */ "QUIT", /* the ETRN exit command */ }; diff --git a/fetchmail.h b/fetchmail.h index f9de3d20..da9c050e 100644 --- a/fetchmail.h +++ b/fetchmail.h @@ -169,7 +169,6 @@ struct method int (*fetch_body)(); /* fetch a given message */ int (*trail)(); /* eat trailer of a message */ int (*delete)(); /* delete method */ - flag (*retain_hdr)(); /* if this returns TRUE, retain message */ char *exit_cmd; /* exit command */ }; -- cgit v1.2.3