void nsHttpResponseHead::ParseHeaderLine(const char *line) { nsHttpAtom hdr = {0}; char *val; mHeaders.ParseHeaderLine(line, &hdr, &val); // leading and trailing LWS has been removed from |val| // handle some special case headers... if (hdr == nsHttp::Content_Length) { PRInt64 len; // permit only a single value here. if (nsHttp::ParseInt64(val, &len)) mContentLength = len; else LOG(("invalid content-length!\n")); } else if (hdr == nsHttp::Content_Type) { LOG(("ParseContentType [type=%s]\n", val)); PRBool dummy; net_ParseContentType(nsDependentCString(val), mContentType, mContentCharset, &dummy); } else if (hdr == nsHttp::Cache_Control) ParseCacheControl(val); else if (hdr == nsHttp::Pragma) ParsePragma(val); }
nsresult nsHttpResponseHead::SetHeader(nsHttpAtom hdr, const nsACString &val, bool merge) { nsresult rv = mHeaders.SetHeader(hdr, val, merge); if (NS_FAILED(rv)) return rv; // respond to changes in these headers. we need to reparse the entire // header since the change may have merged in additional values. if (hdr == nsHttp::Cache_Control) ParseCacheControl(mHeaders.PeekHeader(hdr)); else if (hdr == nsHttp::Pragma) ParsePragma(mHeaders.PeekHeader(hdr)); return NS_OK; }
nsresult nsHttpResponseHead::ParseHeaderLine(const char *line) { nsHttpAtom hdr = {0}; char *val; nsresult rv; rv = mHeaders.ParseHeaderLine(line, &hdr, &val); if (NS_FAILED(rv)) return rv; // leading and trailing LWS has been removed from |val| // handle some special case headers... if (hdr == nsHttp::Content_Length) { int64_t len; const char *ignored; // permit only a single value here. if (nsHttp::ParseInt64(val, &ignored, &len)) { mContentLength = len; } else { // If this is a negative content length then just ignore it LOG(("invalid content-length! %s\n", val)); } } else if (hdr == nsHttp::Content_Type) { LOG(("ParseContentType [type=%s]\n", val)); bool dummy; net_ParseContentType(nsDependentCString(val), mContentType, mContentCharset, &dummy); } else if (hdr == nsHttp::Cache_Control) ParseCacheControl(val); else if (hdr == nsHttp::Pragma) ParsePragma(val); return NS_OK; }
nsresult nsHttpResponseHead::ParseHeaderLine(const char *line) { nsHttpAtom hdr = {0}; char *val; nsresult rv; rv = mHeaders.ParseHeaderLine(line, &hdr, &val); if (NS_FAILED(rv)) return rv; // leading and trailing LWS has been removed from |val| // handle some special case headers... if (hdr == nsHttp::Content_Length) { PRInt64 len; // permit only a single value here. if (nsHttp::ParseInt64(val, &len)) { mContentLength = len; } else { LOG(("invalid content-length!\n")); return NS_ERROR_CORRUPTED_CONTENT; } } else if (hdr == nsHttp::Content_Type) { LOG(("ParseContentType [type=%s]\n", val)); PRBool dummy; net_ParseContentType(nsDependentCString(val), mContentType, mContentCharset, &dummy); } else if (hdr == nsHttp::Cache_Control) ParseCacheControl(val); else if (hdr == nsHttp::Pragma) ParsePragma(val); return NS_OK; }