+unsigned Message::parse_headers(const string &d)
+{
+ unsigned start=0;
+ while(1)
+ {
+ unsigned lf=d.find('\n', start);
+ if(lf==string::npos)
+ throw InvalidParameterValue("Incomplete response");
+ if(lf==start || (d[start]=='\r' && lf==start+1))
+ return lf+1;
+
+ unsigned colon=d.find(':', start);
+ if(colon>lf)
+ throw InvalidParameterValue("No colon in header");
+
+ set_header(d.substr(start, colon-start), strip(d.substr(colon+1, lf-colon-1)));
+
+ start=lf+1;
+ }
+}