diff --git a/exec/load/mime.js b/exec/load/mime.js index 072d226bf11ebfc4371bd5e07c9542da35d4cc1e..eb36b2e9a55d36cd7138a4d186607e3fe8c5af97 100644 --- a/exec/load/mime.js +++ b/exec/load/mime.js @@ -593,23 +593,26 @@ var field_info={ "subject":{min:0, max:1}, }; +function strip_CFWS(str) +{ + var strip=new RegExp("^"+abnf.CFWS+"*(.*?)"+abnf.CFWS+"*$","i"); + + str=str.replace(strip,"$1"); + return(str); +} + function parse_header(str) { var hdr={}; var m; var re; - re=new RegExp("^("+abnf.obs_optional+")", "i"); + re=new RegExp("^("+abnf.field_name+")"+abnf.WSP+"*:"+rfc5322abnf.unstructured+""+abnf.CRLF,"i"); m=re.exec(str); if(m==null) return(undefined); - hdr.orig=m[1]; - re=new RegExp("^("+abnf.field_name+")"+abnf.WSP+"*:","i"); - m=re.exec(hdr.orig); - if(m==null) - return(undefined); - hdr.field=m[1]; - hdr.field=hdr.field.toLowerCase(); + hdr.orig=m[0]; + hdr.field=m[1].toLowerCase(); return(hdr); } @@ -622,9 +625,8 @@ function parse_headers(str) hdrs[":mime:"]=[]; while(str.length > 0) { hdr=parse_header(str); - if(hdr==undefined) { + if(hdr==undefined) break; - } hdrs["::"].push(hdr.orig); if(hdrs[hdr.field]==undefined) hdrs[hdr.field]=[]; @@ -638,14 +640,6 @@ function parse_headers(str) return(hdrs); } -function strip_CFWS(str) -{ - var strip=new RegExp("^"+abnf.CFWS+"*(.*?)"+abnf.CFWS+"*$","i"); - - str=str.replace(strip,"$1"); - return(str); -} - function get_next_symbol(str) { var m;