summaryrefslogtreecommitdiff
path: root/netwerk/base/nsSocketTransport2.cpp
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2022-02-10 15:10:39 +0000
committerMoonchild <moonchild@palemoon.org>2022-05-30 08:26:32 +0000
commit7322bc0e9df42bd43d84ec9be22b00c47a09f3d7 (patch)
tree40d04aeec7778524a3721e5301c4e04172631170 /netwerk/base/nsSocketTransport2.cpp
parent0fad29313537dc8ee16caf78babeb50e122e0781 (diff)
downloaduxp-7322bc0e9df42bd43d84ec9be22b00c47a09f3d7.tar.gz
[network] SocketTransport2 cleanup
Diffstat (limited to 'netwerk/base/nsSocketTransport2.cpp')
-rw-r--r--netwerk/base/nsSocketTransport2.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index c1011b1053..a53d803c6e 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -930,7 +930,6 @@ nsresult
nsSocketTransport::InitWithConnectedSocket(PRFileDesc *fd, const NetAddr *addr)
{
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread, "wrong thread");
- NS_ASSERTION(!mFD.IsInitialized(), "already initialized");
char buf[kNetAddrMaxCStrBufSize];
NetAddrToString(addr, buf, sizeof(buf));
@@ -956,6 +955,7 @@ nsSocketTransport::InitWithConnectedSocket(PRFileDesc *fd, const NetAddr *addr)
{
MutexAutoLock lock(mLock);
+ NS_ASSERTION(!mFD.IsInitialized(), "already initialized");
mFD = fd;
mFDref = 1;
mFDconnected = 1;
@@ -1319,11 +1319,14 @@ nsSocketTransport::InitiateSocket()
//
// if we already have a connected socket, then just attach and return.
//
- if (mFD.IsInitialized()) {
+ {
+ MutexAutoLock lock(mlock);
+ if (mFD.IsInitialized()) {
rv = mSocketTransportService->AttachSocket(mFD, this);
if (NS_SUCCEEDED(rv))
- mAttached = true;
+ mAttached = true;
return rv;
+ }
}
//
@@ -1389,18 +1392,18 @@ nsSocketTransport::InitiateSocket()
PR_SetSocketOption(fd, &opt);
#endif
- // inform socket transport about this newly created socket...
- rv = mSocketTransportService->AttachSocket(fd, this);
- if (NS_FAILED(rv)) {
- CloseSocket(fd);
- return rv;
- }
- mAttached = true;
-
// assign mFD so that we can properly handle OnSocketDetached before we've
// established a connection.
{
MutexAutoLock lock(mLock);
+ // inform socket transport about this newly created socket...
+ rv = mSocketTransportService->AttachSocket(fd, this);
+ if (NS_FAILED(rv)) {
+ CloseSocket(fd);
+ return rv;
+ }
+ mAttached = true;
+
mFD = fd;
mFDref = 1;
mFDconnected = false;
@@ -1545,8 +1548,12 @@ nsSocketTransport::RecoverFromError()
nsresult rv;
- // OK to check this outside mLock
- NS_ASSERTION(!mFDconnected, "socket should not be connected");
+#ifdef DEBUG
+ {
+ MutexAutoLock lock(mLock);
+ NS_ASSERTION(!mFDconnected, "socket should not be connected");
+ }
+#endif
// all connection failures need to be reported to DNS so that the next
// time we will use a different address if available.