Fix MAC bustage - quick and dirty.

This commit is contained in:
ruslan%netscape.com 2000-04-01 06:50:56 +00:00
parent 3c2bcff92a
commit 0713b87afe
4 changed files with 34 additions and 15 deletions

View File

@ -97,7 +97,8 @@ nsHTTPChannel::nsHTTPChannel(nsIURI* i_URL, nsHTTPHandler* i_Handler):
mBufferSegmentSize(0),
mBufferMaxSize(0),
mStatus(NS_OK),
mPipeliningAllowed (PR_FALSE)
mPipeliningAllowed (PR_FALSE),
mPipelinedRequest (nsnull)
{
NS_INIT_REFCNT();
@ -123,6 +124,7 @@ nsHTTPChannel::~nsHTTPChannel()
#endif
NS_IF_RELEASE(mResponse);
NS_IF_RELEASE(mCachedResponse);
NS_IF_RELEASE(mPipelinedRequest);
mHandler = null_nsCOMPtr();
mEventSink = null_nsCOMPtr();
@ -1308,11 +1310,11 @@ nsHTTPChannel::Open(void)
}
} /* WAITING_FOR_OPEN */
nsCOMPtr<nsHTTPPipelinedRequest> pReq = mPipelinedRequest;
nsHTTPPipelinedRequest * pReq = mPipelinedRequest;
if (!pReq)
{
mHandler -> GetPipelinedRequest (this, getter_AddRefs (pReq));
mHandler -> GetPipelinedRequest (this, &pReq);
pReq -> AddToPipeline (mRequest);
}
@ -1326,6 +1328,8 @@ nsHTTPChannel::Open(void)
{
if (!mPipelinedRequest)
mPipelinedRequest = pReq;
else
NS_RELEASE (pReq);
rv = pReq -> WriteRequest ();
@ -1344,6 +1348,7 @@ nsHTTPChannel::Open(void)
else
{
mHandler -> AddPipelinedRequest (pReq);
NS_RELEASE (pReq);
}
mState = HS_WAITING_FOR_RESPONSE;

View File

@ -171,7 +171,7 @@ protected:
nsresult mStatus;
nsCOMPtr<nsIChannel> mCacheTransport;
nsCOMPtr<nsHTTPPipelinedRequest> mPipelinedRequest;
nsHTTPPipelinedRequest* mPipelinedRequest;
PRBool mPipeliningAllowed;
};

View File

@ -22,8 +22,8 @@
#include "nspr.h"
#include "nsIURL.h"
#include "nsHTTPRequest.h"
#include "nsIHTTPProtocolHandler.h"
#include "nsHTTPRequest.h"
#include "nsHTTPAtoms.h"
#include "nsHTTPEnums.h"
#include "nsIPipe.h"
@ -562,7 +562,7 @@ nsHTTPPipelinedRequest::WriteRequest ()
if (mAttempts > 2)
return NS_ERROR_FAILURE;
nsCOMPtr<nsHTTPRequest> req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (0));
nsHTTPRequest * req = (nsHTTPRequest *) mRequests -> ElementAt (0);
if (!mTransport)
{
@ -573,6 +573,8 @@ nsHTTPPipelinedRequest::WriteRequest ()
if (NS_FAILED (rv))
return rv;
}
NS_RELEASE (req);
if (NS_FAILED (rv))
return rv;
@ -581,8 +583,9 @@ nsHTTPPipelinedRequest::WriteRequest ()
{
for (index = 0; index < count; index++)
{
req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (index));
req = (nsHTTPRequest *) mRequests -> ElementAt (index);
req -> formHeaders (mCapabilities);
NS_RELEASE (req);
}
}
@ -590,10 +593,12 @@ nsHTTPPipelinedRequest::WriteRequest ()
for (index = 0; index < count; index++)
{
req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (index));
req = (nsHTTPRequest *) mRequests -> ElementAt (index);
req -> formBuffer (&mRequestBuffer);
if (index == 0)
mTransport -> SetNotificationCallbacks (req -> mConnection);
NS_RELEASE (req);
}
//
@ -624,9 +629,10 @@ nsHTTPPipelinedRequest::WriteRequest ()
rv = mTransport->SetTransferCount(mRequestBuffer.Length());
if (NS_FAILED(rv)) return rv;
req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (0));
req = (nsHTTPRequest *) mRequests -> ElementAt (0);
rv = mTransport->AsyncWrite(stream, this, (nsISupports*)(nsIRequest*)req -> mConnection);
NS_RELEASE (req);
return rv;
}
@ -650,7 +656,7 @@ nsHTTPPipelinedRequest::OnStopRequest (nsIChannel* channel, nsISupports* i_Conte
nsresult rv;
nsCOMPtr<nsISocketTransport> trans = do_QueryInterface (mTransport, &rv);
nsCOMPtr<nsHTTPRequest> req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (0));
nsHTTPRequest * req = (nsHTTPRequest *) mRequests -> ElementAt (0);
rv = iStatus;
@ -725,7 +731,10 @@ nsHTTPPipelinedRequest::OnStopRequest (nsIChannel* channel, nsISupports* i_Conte
rv = WriteRequest ();
if (NS_SUCCEEDED (rv))
{
NS_IF_RELEASE (req);
return rv;
}
}
// Notify the HTTPChannel that the request has finished
@ -878,20 +887,21 @@ nsresult
nsHTTPPipelinedRequest::AdvanceToNextRequest ()
{
PRUint32 count = 0;
nsCOMPtr<nsHTTPRequest> req;
nsHTTPRequest *req;
mRequests -> Count (&count);
if (count == 0)
return NS_ERROR_FAILURE;
req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (0));
req = (nsHTTPRequest *) mRequests -> ElementAt (0);
if (req)
{
mTransport -> SetNotificationCallbacks (nsnull);
req -> mPipelinedRequest = nsnull;
mRequests -> RemoveElement (req);
NS_RELEASE (req);
}
mRequests -> Count (&count);
@ -899,10 +909,13 @@ nsHTTPPipelinedRequest::AdvanceToNextRequest ()
if (count == 0)
return NS_ERROR_FAILURE;
req = dont_AddRef ((nsHTTPRequest *) mRequests -> ElementAt (0));
req = (nsHTTPRequest *) mRequests -> ElementAt (0);
if (req)
{
mTransport -> SetNotificationCallbacks (req -> mConnection);
NS_RELEASE (req);
}
return NS_OK;
}

View File

@ -481,8 +481,8 @@ nsHTTPServerListener::OnStartRequest (nsIChannel* channel, nsISupports* i_pConte
mChannel = nsnull;
mResponseDataListener = null_nsCOMPtr ();
nsCOMPtr<nsHTTPRequest> req;
mPipelinedRequest -> GetCurrentRequest (getter_AddRefs (req));
nsHTTPRequest * req;
mPipelinedRequest -> GetCurrentRequest (&req);
if (req)
{
@ -492,6 +492,7 @@ nsHTTPServerListener::OnStartRequest (nsIChannel* channel, nsISupports* i_pConte
mChannel -> mHTTPServerListener = this;
NS_ADDREF (mChannel);
}
NS_RELEASE (req);
}
return NS_OK;