projects
/
citadel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0c28d1e
)
* unfold_rfc822_field(): don't forget to copy over chars while unfolding
author
Wilfried Göesgens
<willi@citadel.org>
Thu, 25 Mar 2010 20:34:55 +0000
(20:34 +0000)
committer
Wilfried Göesgens
<willi@citadel.org>
Thu, 25 Mar 2010 20:34:55 +0000
(20:34 +0000)
citadel/internet_addressing.c
patch
|
blob
|
history
diff --git
a/citadel/internet_addressing.c
b/citadel/internet_addressing.c
index 006ad8e9b401a64a25eda40a4bd8d87dc33565f9..c448001d17300b29858429be60f18b0693a89386 100644
(file)
--- a/
citadel/internet_addressing.c
+++ b/
citadel/internet_addressing.c
@@
-388,20
+388,29
@@
void unfold_rfc822_field(char **field, char **FieldEnd)
sField < pFieldEnd;
pField++, sField++)
{
sField < pFieldEnd;
pField++, sField++)
{
- if (*pField=='\"') quote = 1 - quote;
- if (!quote) {
- if (isspace(*sField))
- {
- *pField = ' ';
- pField++;
+ if ((*sField=='\r') || (*sField=='\n')) {
+ while (isspace(*sField))
sField++;
sField++;
-
- while ((sField < pFieldEnd) &&
- isspace(*sField))
+ *pField = *sField;
+ }
+ else {
+ if (*sField=='\"') quote = 1 - quote;
+ if (!quote) {
+ if (isspace(*sField))
+ {
+ *pField = ' ';
+ pField++;
sField++;
sField++;
+
+ while ((sField < pFieldEnd) &&
+ isspace(*sField))
+ sField++;
+ *pField = *sField;
+ }
+ else *pField = *sField;
}
}
+ else *pField = *sField;
}
}
- else *pField = *sField;
}
*pField = '\0';
*FieldEnd = pField - 1;
}
*pField = '\0';
*FieldEnd = pField - 1;
@@
-573,8
+582,10
@@
int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) {
valueend = key + len;
* ( key + (colonpos - beg) ) = '\0';
value = &key[(colonpos - beg) + 1];
valueend = key + len;
* ( key + (colonpos - beg) ) = '\0';
value = &key[(colonpos - beg) + 1];
+/* printf("Header: [%s]\nValue: [%s]\n", key, value); */
unfold_rfc822_field(&value, &valueend);
valuelen = valueend - value + 1;
unfold_rfc822_field(&value, &valueend);
valuelen = valueend - value + 1;
+/* printf("UnfoldedValue: [%s]\n", value); */
/*
* Here's the big rfc822-to-citadel loop.
/*
* Here's the big rfc822-to-citadel loop.