Changeset 80092 in webkit


Ignore:
Timestamp:
Mar 1, 2011 10:06:10 PM (13 years ago)
Author:
yutak@chromium.org
Message:

2011-03-01 Yuta Kitamura <yutak@chromium.org>

Reviewed by Darin Adler.

REGRESSION(r78383): Failure to connect on websocketstest.com
https://bugs.webkit.org/show_bug.cgi?id=54811

After r78383, KURL::setPort() no longer appends ":port" part
if that port is the default port for URL scheme. This broke
SocketStreamHandleCFNet, whose code was based on an assumption
that KURL::setPort() always inserts ":port" part.

To fix this, KURL::port() call is removed from SocketStreamHandle
and the port number is calculated on-the-fly.

Unfortunately it is impossible to write a test; this bug only
affects WebSockets connecting to the default port (port 80
for ws, port 443 for wss), while we use different ports to test
WebSockets in LayoutTests.

  • platform/network/cf/SocketStreamHandle.h:
  • platform/network/cf/SocketStreamHandleCFNet.cpp: (WebCore::SocketStreamHandle::SocketStreamHandle): (WebCore::SocketStreamHandle::createStreams): (WebCore::SocketStreamHandle::port):
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r80086 r80092  
     12011-03-01  Yuta Kitamura  <yutak@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        REGRESSION(r78383): Failure to connect on websocketstest.com
     6        https://bugs.webkit.org/show_bug.cgi?id=54811
     7
     8        After r78383, KURL::setPort() no longer appends ":port" part
     9        if that port is the default port for URL scheme. This broke
     10        SocketStreamHandleCFNet, whose code was based on an assumption
     11        that KURL::setPort() always inserts ":port" part.
     12
     13        To fix this, KURL::port() call is removed from SocketStreamHandle
     14        and the port number is calculated on-the-fly.
     15
     16        Unfortunately it is impossible to write a test; this bug only
     17        affects WebSockets connecting to the default port (port 80
     18        for ws, port 443 for wss), while we use different ports to test
     19        WebSockets in LayoutTests.
     20
     21        * platform/network/cf/SocketStreamHandle.h:
     22        * platform/network/cf/SocketStreamHandleCFNet.cpp:
     23        (WebCore::SocketStreamHandle::SocketStreamHandle):
     24        (WebCore::SocketStreamHandle::createStreams):
     25        (WebCore::SocketStreamHandle::port):
     26
    1272011-03-01  Sheriff Bot  <webkit.review.bot@gmail.com>
    228
  • trunk/Source/WebCore/platform/network/cf/SocketStreamHandle.h

    r77937 r80092  
    7373
    7474    bool shouldUseSSL() const { return m_url.protocolIs("wss"); }
     75    unsigned short port() const;
    7576
    7677    void addCONNECTCredentials(CFHTTPMessageRef response);
  • trunk/Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp

    r77937 r80092  
    7070    ASSERT(url.protocolIs("ws") || url.protocolIs("wss"));
    7171
    72     if (!m_url.port())
    73         m_url.setPort(shouldUseSSL() ? 443 : 80);
    74 
    7572    KURL httpsURL(KURL(), "https://" + m_url.host());
    7673    m_httpsURL.adoptCF(httpsURL.createCFURL());
     
    319316    CFReadStreamRef readStream = 0;
    320317    CFWriteStreamRef writeStream = 0;
    321     CFStreamCreatePairWithSocketToHost(0, host.get(), m_url.port(), &readStream, &writeStream);
     318    CFStreamCreatePairWithSocketToHost(0, host.get(), port(), &readStream, &writeStream);
    322319
    323320    m_readStream.adoptCF(readStream);
     
    674671}
    675672
     673unsigned short SocketStreamHandle::port() const
     674{
     675    if (unsigned short urlPort = m_url.port())
     676        return urlPort;
     677    if (shouldUseSSL())
     678        return 443;
     679    return 80;
     680}
     681
    676682}  // namespace WebCore
Note: See TracChangeset for help on using the changeset viewer.