diff --git a/src/modules/MIME/module.pmod.in b/src/modules/MIME/module.pmod.in index 7c4600ed8c524644a706a98a22b7264015ec9d8a..73a31a1b6fdfc1f08ebabd823567c4701b4e6e5b 100644 --- a/src/modules/MIME/module.pmod.in +++ b/src/modules/MIME/module.pmod.in @@ -1,5 +1,5 @@ /* - * $Id: module.pmod.in,v 1.15 1999/03/07 17:47:34 marcus Exp $ + * $Id: module.pmod.in,v 1.16 1999/03/07 18:01:22 marcus Exp $ * * RFC1521 functionality for Pike * @@ -234,7 +234,10 @@ class support { headers[hname=lower_case(hname)] = (headers[hname]||({}))+({hcontents}); else - headers[lower_case(hname)] = hcontents; + if(headers[lower_case(hname)]) + headers[lower_case(hname)] += "\0"+hcontents; + else + headers[lower_case(hname)] = hcontents; } } return ({ headers, body }); @@ -389,22 +392,19 @@ class Message { return map( indices(headers), lambda(string hname){ - if (stringp(headers[hname])) - return replace(map(hname/"-", String.capitalize)*"-", "Mime", "MIME")+ - ": "+headers[hname]; - else - return map(headers[hname], - lambda(string header,string hname) { - return hname+": "+header; - }, - replace(map(hname/"-", String.capitalize)*"-","Mime","MIME"))*"\r\n"; - } )*"\r\n" + "\r\n\r\n" + data; + return map(headers[hname]/"\0", + lambda(string header,string hname) { + return hname+": "+header; + }, + replace(map(hname/"-", + String.capitalize)*"-", + "Mime","MIME"))*"\r\n"; + } )*"\r\n" + "\r\n\r\n" + data; } void create(void | string message, void | mapping(string:string|array(string)) hdrs, - void | array(object) parts, - void | int use_multiple_headers) + void | array(object) parts) { encoded_data = 0; decoded_data = 0; @@ -422,24 +422,10 @@ class Message { decoded_data = message; if (hdrs) foreach( indices(hdrs), hname ) - if (use_multiple_headers) { - if (headers[lower_case(hname)]) { - array(string)|string to_add; - if (!arrayp(to_add = hdrs[hname])) - to_add = ({ to_add }); - if (!arrayp(headers[lower_case(hname)])) - headers[lower_case(hname)] = ({ headers[lower_case(hname)] }) + - to_add; - else - headers[lower_case(hname)] += to_add; - } else - headers[lower_case(hname)] = hdrs[hname]; - } else - headers[lower_case(hname)] = hdrs[hname]; + headers[lower_case(hname)] = hdrs[hname]; body_parts = parts; } else if (message) { - array(mapping(string:string)|string) h = - parse_headers(message,use_multiple_headers); + array(mapping(string:string)|string) h = parse_headers(message); headers = h[0]; encoded_data = h[1]; }