diff options
author | Moonchild <moonchild@palemoon.org> | 2022-02-10 15:10:39 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2022-05-30 08:26:32 +0000 |
commit | 7322bc0e9df42bd43d84ec9be22b00c47a09f3d7 (patch) | |
tree | 40d04aeec7778524a3721e5301c4e04172631170 /netwerk/base/nsSocketTransport2.cpp | |
parent | 0fad29313537dc8ee16caf78babeb50e122e0781 (diff) | |
download | uxp-7322bc0e9df42bd43d84ec9be22b00c47a09f3d7.tar.gz |
[network] SocketTransport2 cleanup
Diffstat (limited to 'netwerk/base/nsSocketTransport2.cpp')
-rw-r--r-- | netwerk/base/nsSocketTransport2.cpp | 33 |
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. |