title: HttpSendRequest blocking when more than two downloads are already in progress
body: <p>In our program, a new thread is created each time an HTTP request needs to be made, and there can be several running simultaneously.  The problem I am having is that if I've got two threads already running, where they are looping on reading from <code>InternetReadFile()</code> after having called <code>HttpSendRequest()</code>, any subsequent attempts to call <code>HttpSendRequest()</code> just hang on that call, so I end up with the previously mentioned two threads continuing to read from their connections just fine, but the third just blocks on <code>HttpSendRequest()</code> until it times out.</p>
  
  <p>From what I've been able to find on my own, this seems like it could just be the way wininet works, as <a href="http://www.ietf.org/rfc/rfc2616.txt" rel="nofollow noreferrer">the HTTP spec</a> recommends: "A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy."</p>
  
  <p>I've seen various programs handle multiple simultaneous downloads to the same server, but I'd imagine they need to do a lot of extra work to do that, in terms of managing the various connections, or writing their own http interface.</p>
  
  <p>If it would require a lot of extra complexity to set it up to handle more than two active sessions, then I would just change things to only handle one or two files at a time, leaving the rest queued.  However, if there were some low-complexity way to allow more than two at a time (off the top of my head, I'd guess using a new process per download might work, but would be messier), that would be preferable; it's not like it would be downloading more than 3-5 simultaneously anyway, and each download is at the user's request.  I read some mentions of registry hacks to change the limit, but that's definitely not something I'd do.  Any ideas?</p>