# write_searchaddr() shouldn't lcase() various fields which will be # used again by further calls to append_fromstage(). # Index: imap/message.c =================================================================== RCS file: /cvs/src/cyrus/imap/message.c,v retrieving revision 1.105 diff -u -d -r1.105 message.c --- imap/message.c 14 Jun 2007 18:15:02 -0000 1.105 +++ imap/message.c 12 Sep 2007 16:03:51 -0000 @@ -202,6 +202,7 @@ struct address *addrlist)); static void message_write_nstring P((struct ibuf *ibuf, char *s)); static void message_write_text P((struct ibuf *ibuf, char *s)); +static void message_write_text_lcase P((struct ibuf *ibuf, char *s)); static void message_write_number P((struct ibuf *ibuf, unsigned n)); static void message_write_section P((struct ibuf *ibuf, struct body *body)); static void message_write_charset P((struct ibuf *ibuf, struct body *body)); @@ -2360,6 +2361,20 @@ } /* + * Write the text 's' to 'ibuf', converting to lower case as we go. + */ +static void +message_write_text_lcase(ibuf, s) +struct ibuf *ibuf; +char *s; +{ + char *p; + + message_ibuf_ensure(ibuf, strlen(s)); + for (p = s; *p; p++) *(ibuf->end)++ = TOLOWER(*p); +} + +/* * Write out the IMAP number 'n' to 'ibuf' */ static void @@ -2607,17 +2622,14 @@ PUTIBUF(ibuf, '<'); if (addrlist->route) { - lcase(addrlist->route); - message_write_text(ibuf, addrlist->route); + message_write_text_lcase(ibuf, addrlist->route); PUTIBUF(ibuf, ':'); } - lcase(addrlist->mailbox); - message_write_text(ibuf, addrlist->mailbox); + message_write_text_lcase(ibuf, addrlist->mailbox); PUTIBUF(ibuf, '@'); - lcase(addrlist->domain); - message_write_text(ibuf, addrlist->domain); + message_write_text_lcase(ibuf, addrlist->domain); PUTIBUF(ibuf, '>'); prevaddr = 1; }