コード例 #1
0
ファイル: DNSWKC.cpp プロジェクト: biddyweb/switch-oss
bool DNSResolveQueue::platformProxyIsEnabledInSystemPreferences()
{
    ResourceHandleManager* mgr = ResourceHandleManager::sharedInstance();
    String proxy = mgr->proxy();
    if (proxy.length() != 0)
        return true;
    return false;
}
コード例 #2
0
ファイル: DNSWKC.cpp プロジェクト: biddyweb/switch-oss
void prefetchDNS(const String& hostname)
{
    ResourceHandleManager* mgr = ResourceHandleManager::sharedInstance();
    String proxy = mgr->proxy();
    if (proxy.length() != 0)
        return;
    if (hostname.length() == 0)
        return;

    DNSResolveQueue::singleton().add(hostname);
}
コード例 #3
0
void ResourceHandle::loadResourceSynchronously(NetworkingContext*, const ResourceRequest& request, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data)
{
    WebCoreSynchronousLoader syncLoader;
    RefPtr<ResourceHandle> handle = adoptRef(new ResourceHandle(request, &syncLoader, true, false));

    ResourceHandleManager* manager = ResourceHandleManager::sharedInstance();

    manager->dispatchSynchronousJob(handle.get());

    error = syncLoader.resourceError();
    data = syncLoader.data();
    response = syncLoader.resourceResponse();
}
コード例 #4
0
void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame*)
{
    WebCoreSynchronousLoader syncLoader;
    ResourceHandle handle(request, &syncLoader, true, false, true);

    ResourceHandleManager* manager = ResourceHandleManager::sharedInstance();

    manager->dispatchSynchronousJob(&handle);

    error = syncLoader.resourceError();
    data = syncLoader.data();
    response = syncLoader.resourceResponse();
}
コード例 #5
0
void
SocketStreamHandleServer::initializeSocket()
{
    m_progressState = EError;

    m_socket = wkcNetSocketPeer(PF_INET, SOCK_STREAM, 0);
    if (!m_socket) {
        LOG(Network, "failed to create socket %p", this);
        m_progressTimer.startOneShot(0);
        return;
    }

    char host[128] = {0};
    int port = 80;
    ::strncpy(host, m_url.host().utf8().data(), sizeof(host)-1);
    if (m_url.hasPort())
        port = m_url.port();
    else if (m_url.protocol()=="wss")
        port = 443;
    else
        port = 80;
    m_useproxy = false;

    ResourceHandleManager* mgr = ResourceHandleManager::sharedInstance();
    if (mgr) {
        String proxy = mgr->proxy();
        if (proxy.length()) {
            URL kp(ParsedURLString, proxy);
            ::strncpy(host, kp.host().utf8().data(), sizeof(host)-1);
            port = kp.port();
            m_useproxy = true;
        }
    }

    struct hostent* ent = 0;
    ent = wkcNetGetHostByNamePeer(host);
    if (!ent) {
        wkcNetClosePeer(m_socket);
        m_socket=0;
        LOG(Network, "failed to resolve name %p : %s", this, m_url.host().utf8().data());
        m_progressTimer.startOneShot(0);
        return;
    }

    struct sockaddr_in dest = {0};
    ::memcpy(&dest.sin_addr, ent->h_addr_list[0], ent->h_length);
    dest.sin_family = AF_INET;
    dest.sin_port = wkc_htons(port);
    int ret = wkcNetConnectPeer(m_socket, (struct sockaddr *)&dest, sizeof(dest));
    if (ret) {
        int lasterr = wkcNetGetLastErrorPeer();
        if (lasterr!=EWOULDBLOCK) {
            wkcNetClosePeer(m_socket);
            m_socket=0;
            LOG(Network, "failed to connect %p : %s", this, m_url.host().utf8().data());
            m_progressTimer.startOneShot(0);
            return;
        }
    }

    long v = 1;
    wkcNetIoctlSocketPeer(m_socket, FIONBIO, &v);

    m_firstSend = true;

    if (!m_useproxy) {
        m_progressState = EConnected;
        m_progressTimer.startOneShot(0);
        return;
    }

    // connect to proxy
    char buf[1024] = {0};
    port = 80;
    if (m_url.hasPort())
        port = m_url.port();
    // Ugh!: support proxy auth!
    // 120912 ACCESS Co.,Ltd.
    ::snprintf(buf, sizeof(buf), "CONNECT %s:%d HTTP/1.1\r\nHost: %s\r\n\r\n", m_url.host().utf8().data(), port, m_url.host().utf8().data());
    wkcNetSendPeer(m_socket, buf, ::strlen(buf), 0);

    m_progressState = EConnectingProxy;
    m_progressTimer.startOneShot(0.1);
}