Commit 6013bf31 authored by Liang-Heng Chen's avatar Liang-Heng Chen
Browse files

Bug 1348841 - Switch on blocking mode for named-pipe only on windows....

Bug 1348841 - Switch on blocking mode for named-pipe only on windows. r=bagder, r=mayhemer, a=lizzard

MozReview-Commit-ID: Gvm88q26VHK

--HG--
extra : source : 4c7f45c7e8a93beeb7172321d8bd73209a42f464
extra : intermediate-source : b2ebbc981c90372f01a7d198a07c964eac6f657c
parent de2d3472
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -425,14 +425,16 @@ nsSOCKSSocketInfo::HandshakeFinished(PRErrorCode err)
{
{
    if (err == 0) {
    if (err == 0) {
        mState = SOCKS_CONNECTED;
        mState = SOCKS_CONNECTED;
#if defined(XP_WIN)
        // Switch back to nonblocking mode after finishing handshaking.
        // Switch back to nonblocking mode after finishing handshaking.
        if (mFD) {
        if (IsLocalProxy() && mFD) {
            PRSocketOptionData opt_nonblock;
            PRSocketOptionData opt_nonblock;
            opt_nonblock.option = PR_SockOpt_Nonblocking;
            opt_nonblock.option = PR_SockOpt_Nonblocking;
            opt_nonblock.value.non_blocking = PR_TRUE;
            opt_nonblock.value.non_blocking = PR_TRUE;
            PR_SetSocketOption(mFD, &opt_nonblock);
            PR_SetSocketOption(mFD, &opt_nonblock);
            mFD = nullptr;
            mFD = nullptr;
        }
        }
#endif
    } else {
    } else {
        mState = SOCKS_FAILED;
        mState = SOCKS_FAILED;
        PR_SetError(PR_UNKNOWN_ERROR, err);
        PR_SetError(PR_UNKNOWN_ERROR, err);
@@ -573,13 +575,15 @@ nsSOCKSSocketInfo::ConnectToProxy(PRFileDesc *fd)
        }
        }
    } while (status != PR_SUCCESS);
    } while (status != PR_SUCCESS);


#if defined(XP_WIN)
    // Switch to blocking mode during handshaking
    // Switch to blocking mode during handshaking
    if (mFD) {
    if (IsLocalProxy() && mFD) {
        PRSocketOptionData opt_nonblock;
        PRSocketOptionData opt_nonblock;
        opt_nonblock.option = PR_SockOpt_Nonblocking;
        opt_nonblock.option = PR_SockOpt_Nonblocking;
        opt_nonblock.value.non_blocking = PR_FALSE;
        opt_nonblock.value.non_blocking = PR_FALSE;
        PR_SetSocketOption(mFD, &opt_nonblock);
        PR_SetSocketOption(mFD, &opt_nonblock);
    }
    }
#endif


    // Connected now, start SOCKS
    // Connected now, start SOCKS
    if (mVersion == 4)
    if (mVersion == 4)