joswa / mongoose

Automatically exported from code.google.com/p/mongoose
MIT License
0 stars 0 forks source link

Connection stalls serving "large" files #282

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Make a page with a lot of large content, such as large .swf and .js files.
2. Make the request.

What is the expected output? What do you see instead?
Expect to see the webpage finish loading. Instead, the page stops loading, and 
depending on which file Chrome is stuck reading from the server, that 
particular Chrome tab or ALL Chrome tabs become unresponsive. (.js results in 
one tab becoming unresponsive, .swf results in all tabs becoming unresponsive)

What version of the product are you using? On what operating system?
3.0 and 3.1, on Windows 7.

Please provide any additional information below.
By patching in asynchronous calls to the push() function, I was able to see 
that send() is constantly returning with error code 10035 (through 
WSAGetLastError()). Granted that normally 10035 could return if we flood the 
send/receive buffer, but this isn't the case. Instead, send permanently returns 
10035 (I've modified the code to keep trying), even when I put the thread to 
sleep.

I've since patched in setsockopt's SO_RCVBUF and SO_SNDBUF to a much larger 
value (64*1024), and haven't been able to reproduce the problem. According to 
the MSDN docs, my default should be 12*1460 (~17k). I also reversed course and 
it definitely does look like setting that value to 1024 bytes readily causes a 
problem (although pages do sometimes complete their load successfully).

I don't really know what the issue is, but I'm inclined to not believe it's a 
Winsock/Windows issue...and the Mongoose code looks pretty solid in that 
regard. I'm itching to point my fingers at Chrome...but I haven't found a 
smoking gun yet.

Original issue reported on code.google.com by chester....@gmail.com on 14 Sep 2011 at 10:22

GoogleCodeExporter commented 9 years ago
This is a tricky one.
I'm trying to reproduce it but fail. Can you put together a page that shows the 
problem please?

Original comment by valenok on 23 Sep 2012 at 12:59