I heave a new problem with mozilla 1.9.2.23 and gecko In my onStateChange chrome's function, I try to get the statusCode when I get a STATE_STOP ans STATE_IS_NETWORK.
what I do for this purpose is: nsresult rv; nsCOMPtr<nsIChannel> channel = do_QueryInterface(aRequest); nsEmbedCString schemeUrlCS; nsCOMPtr<nsIURI> uri; channel->GetURI(getter_AddRefs(uri)); if(uri) { uri->GetScheme(schemeUrlCS); } const char* scheme=schemeUrlCS.get(); String schemeStr=scheme; nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(channel)); if (httpChannel) { nsCString header; nsCString retval; myResponseStatus = WebBrowserEmbedded::infinite; httpChannel->GetResponseHeader(header,retval); rv=httpChannel->GetResponseStatus(&myResponseStatus); myNavigationDone=false; } When the StatusCode is 200 myResponseStatus is 200 otherwise, I get nothing. I tried to get the responseHeader, but I've nothing (no datas), in all cases.. (even with statuscode 200). I took a look into nsHttpChannel.cpp and nsHttpREsponseHead.cpp (C: \mozilla-1.9.2.23\netwerk\protocol\http\src) nsHttpChannel.cpp: _______________________ NS_IMETHODIMP nsHttpChannel::GetResponseStatus(PRUint32 *value) { NS_ENSURE_ARG_POINTER(value); if (!mResponseHead) return NS_ERROR_NOT_AVAILABLE; *value = mResponseHead->Status(); return NS_OK; } nsHttpResponseHead.cpp ______________________ status() is a inline function into nsHttpResponseHead.h that returns mStatus When I lokk at parseStatusLine, I see that : if ((mVersion == NS_HTTP_VERSION_0_9) || !(line = PL_strchr(line, ' '))) { mStatus = 200; mStatusText.AssignLiteral("OK"); } I probably am not in such case, so I think I execute the else case. else { // Status-Code mStatus = (PRUint16) atoi(++line); if (mStatus == 0) { printf("line=%s\nstatus=%d\n",line,mStatus); LOG(("mal-formed response status; assuming status = 200\n")); mStatus = 200; } // Reason-Phrase is whatever is remaining of the line if (!(line = PL_strchr(line, ' '))) { printf("line=%s\nstatus=%d\n",line,mStatus); LOG(("mal-formed response status line; assuming statusText = 'OK'\n")); mStatusText.AssignLiteral("OK"); } else mStatusText = ++line; } the line is considered anyway as malformed... and mStatus is not set when mstatus!=0 ... What can I do ? Is there a correction ? thank's philippe _______________________________________________ dev-embedding mailing list dev-embedding@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-embedding