How I improved wininet for SSL through a proxy...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to get my app to use WinInet to connect to a https url through a proxy.  I found that the following patch (my code in bold) to http.c improved wininet.dll.so (based on the 2.1-rc2 code) so that my app can talk to some servers.  It still doesn't work if the server returns with a CONTINUE.  But not all servers are using this.  Thankfully the one server my app really depends on doesn't use CONTINUE, so this is a big step forward for me.

Here it is (the original logic I'm enhancing is in blue):

static LPWSTR HTTP_BuildHeaderRequestString( http_request_t *lpwhr, LPCWSTR verb, LPCWSTR path, LPCWSTR version )
{
        ...
        static const WCHAR szZero[] = { '0',0 };
        static const WCHAR szConnect[] = {'C','O','N','N','E','C','T',0};
        ...
        if (!strcmpW(szContent_Length, lpwhr->pCustHeaders[i].lpszField) && !strcmpW(verb, szConnect))
        {
            // CONNECT ... Content-Length: 0  <-- seems to help POST over SSL w/ Proxy
            req[n++] = szCrLf;
            req[n++] = lpwhr->pCustHeaders[i].lpszField;
            req[n++] = szColon;
            req[n++] = szZero;

            TRACE("Adding custom header %s (%s)\n",
                   debugstr_w(lpwhr->pCustHeaders[i].lpszField),
                   debugstr_w(szZero));
         }
         else         {			
            req[n++] = szCrLf;
            req[n++] = lpwhr->pCustHeaders[i].lpszField;
            req[n++] = szColon;
            req[n++] = lpwhr->pCustHeaders[i].lpszValue;

            TRACE("Adding custom header %s (%s)\n",
                   debugstr_w(lpwhr->pCustHeaders[i].lpszField),
                   debugstr_w(lpwhr->pCustHeaders[i].lpszValue));
        }
...
}

// It's changing the Content-Length header to always be "Content-Length: 0" when the "CONNECT" method is used







[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux