mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +09:00
Issue #1991 - backport Mozilla bug 1266667
This commit is contained in:
parent
536099d86b
commit
b4c5ebf00a
13 changed files with 85 additions and 7 deletions
|
|
@ -738,6 +738,7 @@ nsSocketTransport::nsSocketTransport()
|
|||
, mProxyTransparentResolvesHost(false)
|
||||
, mHttpsProxy(false)
|
||||
, mConnectionFlags(0)
|
||||
, mReuseAddrPort(false)
|
||||
, mState(STATE_CLOSED)
|
||||
, mAttached(false)
|
||||
, mInputClosed(true)
|
||||
|
|
@ -1355,6 +1356,32 @@ nsSocketTransport::InitiateSocket()
|
|||
status = PR_SetSocketOption(fd, &opt);
|
||||
NS_ASSERTION(status == PR_SUCCESS, "unable to make socket non-blocking");
|
||||
|
||||
if (mReuseAddrPort) {
|
||||
SOCKET_LOG((" Setting port/addr reuse socket options\n"));
|
||||
|
||||
// Set ReuseAddr for TCP sockets to enable having several
|
||||
// sockets bound to same local IP and port
|
||||
PRSocketOptionData opt_reuseaddr;
|
||||
opt_reuseaddr.option = PR_SockOpt_Reuseaddr;
|
||||
opt_reuseaddr.value.reuse_addr = PR_TRUE;
|
||||
status = PR_SetSocketOption(fd, &opt_reuseaddr);
|
||||
if (status != PR_SUCCESS) {
|
||||
SOCKET_LOG((" Couldn't set reuse addr socket option: %d\n",
|
||||
status));
|
||||
}
|
||||
|
||||
// And also set ReusePort for platforms supporting this socket option
|
||||
PRSocketOptionData opt_reuseport;
|
||||
opt_reuseport.option = PR_SockOpt_Reuseport;
|
||||
opt_reuseport.value.reuse_port = PR_TRUE;
|
||||
status = PR_SetSocketOption(fd, &opt_reuseport);
|
||||
if (status != PR_SUCCESS
|
||||
&& PR_GetError() != PR_OPERATION_NOT_SUPPORTED_ERROR) {
|
||||
SOCKET_LOG((" Couldn't set reuse port socket option: %d\n",
|
||||
status));
|
||||
}
|
||||
}
|
||||
|
||||
// disable the nagle algorithm - if we rely on it to coalesce writes into
|
||||
// full packets the final packet of a multi segment POST/PUT or pipeline
|
||||
// sequence is delayed a full rtt
|
||||
|
|
@ -2484,6 +2511,13 @@ nsSocketTransport::SetTimeout(uint32_t type, uint32_t value)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSocketTransport::SetReuseAddrPort(bool reuseAddrPort)
|
||||
{
|
||||
mReuseAddrPort = reuseAddrPort;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSocketTransport::SetQoSBits(uint8_t aQoSBits)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue