Home made Proxy little bug.
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3

Thread: Home made Proxy little bug.

  1. #1
    Join Date
    Aug 2010
    Posts
    1

    Home made Proxy little bug.

    Hi,
    I make a web proxy in c++. It works great by it always stay some little bug. For exemple: When I load the msn home page, there sometime some picture seems broken (X). I can connect to https site but, in Facebook, i cant update my statue. All the other thing work but not this one. The little chat on the left in gmail dont work. Little think like that! Youtube work great! SOme ajax web site work great but, not all!

    Pseudo code:
    Each time the port receive a connection
    Create a new thread

    This is the execution of the new thread:
    Receive http request from Browser
    Parse the header and connect to server
    Send the http request to server
    Loop while a connection is close
    Manage who wants to talk (Server or Browser)
    Transfert the data from who wants to talk to the other

    Note:
    Before (Send the http request to server), I modify the header becose the header I receive is:
    GET http://www.google.com/ HTTP/1.1
    Host: www.google.com
    ...

    Modify to:
    GET / HTTP/1.1
    Host: www.google.com
    ...
    Cache-Control: no
    Connection: close


    and if the header use the CONNECT methode, I create the connection to the server from the specified port and adresse: CONNECT www.app.com:443 HTTP/1.1 and I return a "HTTP/1.0 200 Connection established\r\n\r\n" to the browser.

    The next step, I think, is to open each header send by the browser to see if the information is corect like i do for the first one. If someone have an other idea. plz. talk!

  2. #2
    Join Date
    Aug 2010
    Posts
    1

    Re: Home made Proxy little bug.

    any help?

  3. #3
    Join Date
    Nov 2002
    Location
    California
    Posts
    4,553

    Re: Home made Proxy little bug.

    Usually, the source of this problem is the expectations of the browser when it deals with a proxy, as opposed to situations where a proxy is not involved.

    Without a proxy, the browser knows to make a new connection when it needs data from a different host. When it knows that it is dealing with a proxy, however, the browser will rely on the proxy to notice when a connection to a different host is needed.

    In other words, without a proxy the browser will make a first HTTP request for data from a first host via a first connection to the host. Then, when data from a second host is needed, the browser will make a second, different connection to the second host, and send a second HTTP request to the second host over the second connection.

    On the other hand, when it knows that it is dealing with a proxy, the browser will make a first connection to the proxy and send a first HTTP request for data from a first host. But when it needs data from a second host, the browser will re-use the same first connection to the proxy, and will send a second HTTP request for the second host using the same first connection. The browser relies on the proxy to notice that a new connection is needed for connection to a second host.

    Your proxy probably does not expect a switch to a different host. It probably assumes that when the browser asks for data initially, then all data will be requested from the same host, and it thus fails to make a new connection to the second host. Instead, it sends the meaningless second HTTP request to the first host, which naturally is unable to fulfill it -- hence the boxes.

    You seem to realize this somewhat, since you are modifying the HTTP/1.1 headers sent to the host so that the headers include the "Connection: Close" header. But you also need to send that header back to the browser, or the browser will not close the connection to the proxy, but rather will try to re-use it.

    Mike

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Azure Activities Information Page

Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center