mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 01:08:39 +09:00
[network] SocketTransport2 cleanup
This commit is contained in:
parent
b8125dbafd
commit
b924810a3e
2 changed files with 29 additions and 14 deletions
|
|
@ -931,7 +931,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));
|
||||
|
|
@ -957,6 +956,7 @@ nsSocketTransport::InitWithConnectedSocket(PRFileDesc *fd, const NetAddr *addr)
|
|||
{
|
||||
MutexAutoLock lock(mLock);
|
||||
|
||||
NS_ASSERTION(!mFD.IsInitialized(), "already initialized");
|
||||
mFD = fd;
|
||||
mFDref = 1;
|
||||
mFDconnected = 1;
|
||||
|
|
@ -1031,6 +1031,7 @@ nsSocketTransport::ResolveHost()
|
|||
this, SocketHost().get(), SocketPort(),
|
||||
mConnectionFlags & nsSocketTransport::BYPASS_CACHE ?
|
||||
" bypass cache" : ""));
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
|
||||
nsresult rv;
|
||||
|
||||
|
|
@ -1237,6 +1238,7 @@ nsresult
|
|||
nsSocketTransport::InitiateSocket()
|
||||
{
|
||||
SOCKET_LOG(("nsSocketTransport::InitiateSocket [this=%p]\n", this));
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
|
||||
nsresult rv;
|
||||
bool isLocal;
|
||||
|
|
@ -1320,11 +1322,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,19 +1394,20 @@ nsSocketTransport::InitiateSocket()
|
|||
opt.value.linger.linger = 0;
|
||||
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;
|
||||
|
||||
// up to here, mFD will only be accessed by us
|
||||
|
||||
// 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;
|
||||
|
|
@ -1546,8 +1552,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.
|
||||
|
|
@ -1799,6 +1809,7 @@ nsSocketTransport::ReleaseFD_Locked(PRFileDesc *fd)
|
|||
void
|
||||
nsSocketTransport::OnSocketEvent(uint32_t type, nsresult status, nsISupports *param)
|
||||
{
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
SOCKET_LOG(("nsSocketTransport::OnSocketEvent [this=%p type=%u status=%x param=%p]\n",
|
||||
this, type, status, param));
|
||||
|
||||
|
|
@ -1911,6 +1922,7 @@ nsSocketTransport::OnSocketEvent(uint32_t type, nsresult status, nsISupports *pa
|
|||
void
|
||||
nsSocketTransport::OnSocketReady(PRFileDesc *fd, int16_t outFlags)
|
||||
{
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
SOCKET_LOG(("nsSocketTransport::OnSocketReady [this=%p outFlags=%hd]\n",
|
||||
this, outFlags));
|
||||
|
||||
|
|
@ -2419,6 +2431,7 @@ nsSocketTransport::Bind(NetAddr *aLocalAddr)
|
|||
NS_ENSURE_ARG(aLocalAddr);
|
||||
|
||||
MutexAutoLock lock(mLock);
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
if (mAttached) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -350,11 +350,13 @@ private:
|
|||
|
||||
void OnMsgInputPending()
|
||||
{
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
if (mState == STATE_TRANSFERRING)
|
||||
mPollFlags |= (PR_POLL_READ | PR_POLL_EXCEPT);
|
||||
}
|
||||
void OnMsgOutputPending()
|
||||
{
|
||||
MOZ_ASSERT(OnSocketThread(), "not on socket thread");
|
||||
if (mState == STATE_TRANSFERRING)
|
||||
mPollFlags |= (PR_POLL_WRITE | PR_POLL_EXCEPT);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue