bug 378637 part 1 - add leak detection macros to http classes r=hurley
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -2463,20 +2463,19 @@ nsHttpConnectionMgr::OnMsgUpdateParam(in
default:
NS_NOTREACHED("unexpected parameter name");
}
}
// nsHttpConnectionMgr::nsConnectionEntry
nsHttpConnectionMgr::nsConnectionEntry::~nsConnectionEntry()
{
+ MOZ_COUNT_DTOR(nsConnectionEntry);
if (mSpdyPreferred)
gHttpHandler->ConnMgr()->RemoveSpdyPreferredEnt(mCoalescingKey);
-
- NS_RELEASE(mConnInfo);
}
void
nsHttpConnectionMgr::OnMsgProcessFeedback(int32_t, void *param)
{
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
nsHttpPipelineFeedback *fb = (nsHttpPipelineFeedback *)param;
@@ -3249,17 +3248,17 @@ nsConnectionEntry::nsConnectionEntry(nsH
, mPipeliningPenalty(0)
, mSpdyCWND(0)
, mUsingSpdy(false)
, mTestedSpdy(false)
, mSpdyPreferred(false)
, mPreferIPv4(false)
, mPreferIPv6(false)
{
- NS_ADDREF(mConnInfo);
+ MOZ_COUNT_CTOR(nsConnectionEntry);
if (gHttpHandler->GetPipelineAggressive()) {
mGreenDepth = kPipelineUnlimited;
mPipelineState = PS_GREEN;
}
mInitialGreenDepth = mGreenDepth;
memset(mPipeliningClassPenalty, 0, sizeof(int16_t) * nsAHttpTransaction::CLASS_MAX);
}
--- a/netwerk/protocol/http/nsHttpConnectionMgr.h
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.h
@@ -260,17 +260,17 @@ private:
// pending transactions.
//
class nsConnectionEntry
{
public:
nsConnectionEntry(nsHttpConnectionInfo *ci);
~nsConnectionEntry();
- nsHttpConnectionInfo *mConnInfo;
+ nsRefPtr<nsHttpConnectionInfo> mConnInfo;
nsTArray<nsHttpTransaction*> mPendingQ; // pending transaction queue
nsTArray<nsHttpConnection*> mActiveConns; // active connections
nsTArray<nsHttpConnection*> mIdleConns; // idle persistent connections
nsTArray<nsHalfOpenSocket*> mHalfOpens; // half open connections
// calculate the number of half open sockets that have not had at least 1
// connection complete
uint32_t UnconnectedHalfOpens();
--- a/netwerk/protocol/http/nsHttpRequestHead.cpp
+++ b/netwerk/protocol/http/nsHttpRequestHead.cpp
@@ -15,16 +15,22 @@
namespace mozilla {
namespace net {
nsHttpRequestHead::nsHttpRequestHead()
: mMethod(NS_LITERAL_CSTRING("GET"))
, mVersion(NS_HTTP_VERSION_1_1)
, mParsedMethod(kMethod_Get)
{
+ MOZ_COUNT_CTOR(nsHttpRequestHead);
+}
+
+nsHttpRequestHead::~nsHttpRequestHead()
+{
+ MOZ_COUNT_DTOR(nsHttpRequestHead);
}
void
nsHttpRequestHead::SetMethod(const nsACString &method)
{
mParsedMethod = kMethod_Custom;
mMethod = method;
if (!strcmp(mMethod.get(), "GET")) {
--- a/netwerk/protocol/http/nsHttpRequestHead.h
+++ b/netwerk/protocol/http/nsHttpRequestHead.h
@@ -16,16 +16,17 @@ namespace mozilla { namespace net {
// nsHttpRequestHead represents the request line and headers from an HTTP
// request.
//-----------------------------------------------------------------------------
class nsHttpRequestHead
{
public:
nsHttpRequestHead();
+ ~nsHttpRequestHead();
void SetMethod(const nsACString &method);
void SetVersion(nsHttpVersion version) { mVersion = version; }
void SetRequestURI(const nsCSubstring &s) { mRequestURI = s; }
const nsHttpHeaderArray &Headers() const { return mHeaders; }
nsHttpHeaderArray & Headers() { return mHeaders; }
const nsCString &Method() const { return mMethod; }