On Mac OS X (10.6), if I start downloading a YouTube video and pull out the Ethernet cable for 5 or so seconds, then plug it back in, I get different results depending on the browser. With Opera and Chrome, after connecting the cable back to the video, it continues to load. But with Safari and Firefox, it never does.
Using Wireshark to look at the traffic, I found that Opera and Chrome just ACK the first packet from YouTube after the cable was plugged back in, but Safari and Firefox set the RST flag (0x4) in the TCP header and there is no more traffic.
I can place the HUB between the machine and the Internet connection, the problem goes away, and all four browsers continue to download the video when the cable is connected back to the hub. Again, looking at the Wireshark logs, it is obvious that the machine does not see the Mulitcast connection closely, and there is simply a delay in the packets passing through.
So it seems that if Safari and Firefox see the Multicast connection and then see the data on the same connection, they will send RST.
My question is why? What is the correct course of action and why does a 2/4 browser do it one way, while the other 2/4 do it differently? Is there somewhere in the code that I can see where this happens in Firefox, for example?
Many thanks.
source
share