aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--pop3.c3
-rw-r--r--uid.c4
3 files changed, 8 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index f7014c97..d56f62b1 100644
--- a/NEWS
+++ b/NEWS
@@ -29,6 +29,9 @@ features --
* SIGUSR1 is now used for wakeup rather than SIGHUP. This eliminates any
possible confusion about fetchmail's behavior at logout time.
+* Received line parsing for envelope addresses now matches MX as well as
+ canonical DNS addresses, making multidrop routing slightly more reliable.
+
bugs --
* Fixed a FreeBSD compilation glitch involving SIGCLD (thanks to
diff --git a/pop3.c b/pop3.c
index f99b9f35..3ee5489b 100644
--- a/pop3.c
+++ b/pop3.c
@@ -181,6 +181,8 @@ static int pop3_getrange(FILE *sockfp, struct query *ctl, int*countp, int*newp)
else if (sscanf(buf, "%d %s", &num, id) == 2)
{
save_str(&ctl->newsaved, num, id);
+
+ /* note: ID comparison is caseblind */
if (!str_in_list(&ctl->oldsaved, id))
(*newp)++;
}
@@ -231,6 +233,7 @@ static int pop3_is_old(FILE *sockfp, struct query *ctl, int num)
if (!ctl->oldsaved)
return (num <= last);
else
+ /* note: ID comparison is caseblind */
return (str_in_list(&ctl->oldsaved,
str_find (&ctl->newsaved, num)));
}
diff --git a/uid.c b/uid.c
index 84f46267..f4e81a9f 100644
--- a/uid.c
+++ b/uid.c
@@ -163,11 +163,11 @@ void free_str_pair_list(struct idlist **idl)
#endif
int str_in_list(struct idlist **idl, const char *str)
-/* is a given ID in the given list? */
+/* is a given ID in the given list? (comparison is caseblind) */
{
if (*idl == (struct idlist *)NULL || str == (char *) NULL)
return(0);
- else if (strcmp(str, (*idl)->id) == 0)
+ else if (strcasecmp(str, (*idl)->id) == 0)
return(1);
else
return(str_in_list(&(*idl)->next, str));