MSDN states WebRequest.Timeout means
The length of time, in milliseconds, until the request times out, or the value Timeout.Infinite to indicate that the request does not time out.
What exactly constitutes a "Timeout"? Is that the maximum amount of time the class will wait before the first byte is returned? Is it the maximum amount of time for the entire request to complete? Is it something else?
I'm asking because I'm using a modified WebClient to download rather large (~1GB) files from a source that sometimes hiccups and takes many minutes to hours to begin sending a response. I want to set the timeout so that successful transfers (that can take up to 20 minutes depending on the connection quality) do not time out, but so that the occasional hiccups will ideally timeout quickly.