public WebConnectionStream (WebConnection cnc, WebConnectionData data)
{
if (data == null)
throw new InvalidOperationException ("data was not initialized");
if (data.Headers == null)
throw new InvalidOperationException ("data.Headers was not initialized");
if (data.request == null)
throw new InvalidOperationException ("data.request was not initialized");
isRead = true;
cb_wrapper = new AsyncCallback (ReadCallbackWrapper);
pending = new ManualResetEvent (true);
this.request = data.request;
read_timeout = request.ReadWriteTimeout;
write_timeout = read_timeout;
this.cnc = cnc;
string contentType = data.Headers ["Transfer-Encoding"];
bool chunkedRead = (contentType != null && contentType.IndexOf ("chunked", StringComparison.OrdinalIgnoreCase) != -1);
string clength = data.Headers ["Content-Length"];
if (!chunkedRead && clength != null && clength != "") {
try {
contentLength = Int32.Parse (clength);
if (contentLength == 0 && !IsNtlmAuth ()) {
ReadAll ();
}
} catch {
contentLength = Int32.MaxValue;
}
} else {
contentLength = Int32.MaxValue;
}
// Negative numbers?
if (!Int32.TryParse (clength, out stream_length))
stream_length = -1;
}