Exemplo n.º 1
0
        void InitConnection(object state)
        {
            HttpWebRequest request = (HttpWebRequest)state;

            request.WebConnection = this;
            if (request.ReuseConnection)
            {
                request.StoredConnection = this;
            }

            if (request.Aborted)
            {
                return;
            }

            keepAlive = request.KeepAlive;
            Data      = new WebConnectionData(request);
retry:
            Connect(request);
            if (request.Aborted)
            {
                return;
            }

            if (status != WebExceptionStatus.Success)
            {
                if (!request.Aborted)
                {
                    request.SetWriteStreamError(status, connect_exception);
                    Close(true);
                }
                return;
            }

            if (!CreateStream(request))
            {
                if (request.Aborted)
                {
                    return;
                }

                WebExceptionStatus st = status;
                if (Data.Challenge != null)
                {
                    goto retry;
                }

                Exception cnc_exc = connect_exception;
                connect_exception = null;
                request.SetWriteStreamError(st, cnc_exc);
                Close(true);
                return;
            }

            request.SetWriteStream(new WebConnectionStream(this, request));
        }
Exemplo n.º 2
0
        private void InitConnection(object state)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)state;

            httpWebRequest.WebConnection = this;
            if (httpWebRequest.Aborted)
            {
                return;
            }
            keepAlive    = httpWebRequest.KeepAlive;
            Data         = new WebConnectionData();
            Data.request = httpWebRequest;
            while (true)
            {
                Connect(httpWebRequest);
                if (httpWebRequest.Aborted)
                {
                    return;
                }
                if (status != 0)
                {
                    if (!httpWebRequest.Aborted)
                    {
                        httpWebRequest.SetWriteStreamError(status, connect_exception);
                        Close(sendNext: true);
                    }
                    return;
                }
                if (CreateStream(httpWebRequest))
                {
                    break;
                }
                if (httpWebRequest.Aborted)
                {
                    return;
                }
                WebExceptionStatus webExceptionStatus = status;
                if (Data.Challenge != null)
                {
                    continue;
                }
                Exception exc = connect_exception;
                connect_exception = null;
                httpWebRequest.SetWriteStreamError(webExceptionStatus, exc);
                Close(sendNext: true);
                return;
            }
            readState = ReadState.None;
            httpWebRequest.SetWriteStream(new WebConnectionStream(this, httpWebRequest));
        }
Exemplo n.º 3
0
        void InitConnection(object state)
        {
            HttpWebRequest request = (HttpWebRequest)state;

            if (status == WebExceptionStatus.RequestCanceled)
            {
                lock (this) {
                    busy = false;
                    Data = new WebConnectionData();
                    SendNext();
                }
                return;
            }

            keepAlive    = request.KeepAlive;
            Data         = new WebConnectionData();
            Data.request = request;
retry:
            Connect();
            if (status != WebExceptionStatus.Success)
            {
                if (status != WebExceptionStatus.RequestCanceled)
                {
                    request.SetWriteStreamError(status);
                    Close(true);
                }
                return;
            }

            if (!CreateStream(request))
            {
                if (Data.Challenge != null)
                {
                    goto retry;
                }

                request.SetWriteStreamError(status);
                Close(true);
                return;
            }

            readState = ReadState.None;
            request.SetWriteStream(new WebConnectionStream(this, request));
        }
Exemplo n.º 4
0
        void InitConnection(object state)
        {
            HttpWebRequest request = (HttpWebRequest)state;

            request.WebConnection = this;
            if (request.ReuseConnection)
            {
                request.StoredConnection = this;
            }

            if (request.Aborted)
            {
                return;
            }

            keepAlive = request.KeepAlive;
            Data      = new WebConnectionData(request);
retry:
            Connect(request);
            if (request.Aborted)
            {
                return;
            }

            if (status != WebExceptionStatus.Success)
            {
                if (!request.Aborted)
                {
                    request.SetWriteStreamError(status, connect_exception);
                    Close(true);
                }
                return;
            }

            if (!CreateStream(request))
            {
                if (request.Aborted)
                {
                    return;
                }

                WebExceptionStatus st = status;
                if (Data.Challenge != null)
                {
                    goto retry;
                }

                Exception cnc_exc = connect_exception;
                if (cnc_exc == null && (Data.StatusCode == 401 || Data.StatusCode == 407))
                {
                    st = WebExceptionStatus.ProtocolError;
                    if (Data.Headers == null)
                    {
                        Data.Headers = new WebHeaderCollection();
                    }

                    var webResponse = new HttpWebResponse(sPoint.Address, "CONNECT", Data, null);
                    cnc_exc = new WebException(Data.StatusCode == 407 ? "(407) Proxy Authentication Required" : "(401) Unauthorized", null, st, webResponse);
                }

                connect_exception = null;
                request.SetWriteStreamError(st, cnc_exc);
                Close(true);
                return;
            }

            request.SetWriteStream(new WebConnectionStream(this, request));
        }
Exemplo n.º 5
0
        private void InitConnection(object state)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)state;

            httpWebRequest.WebConnection = this;
            if (httpWebRequest.Aborted)
            {
                return;
            }
            this.keepAlive    = httpWebRequest.KeepAlive;
            this.Data         = new WebConnectionData();
            this.Data.request = httpWebRequest;
            WebExceptionStatus webExceptionStatus;

            for (;;)
            {
                this.Connect(httpWebRequest);
                if (httpWebRequest.Aborted)
                {
                    break;
                }
                if (this.status != WebExceptionStatus.Success)
                {
                    goto Block_3;
                }
                if (this.CreateStream(httpWebRequest))
                {
                    goto IL_D2;
                }
                if (httpWebRequest.Aborted)
                {
                    return;
                }
                webExceptionStatus = this.status;
                if (this.Data.Challenge == null)
                {
                    goto IL_B4;
                }
            }
            return;

Block_3:
            if (!httpWebRequest.Aborted)
            {
                httpWebRequest.SetWriteStreamError(this.status, this.connect_exception);
                this.Close(true);
            }
            return;

IL_B4:
            Exception exc = this.connect_exception;

            this.connect_exception = null;
            httpWebRequest.SetWriteStreamError(webExceptionStatus, exc);
            this.Close(true);
            return;

IL_D2:
            this.readState = ReadState.None;
            httpWebRequest.SetWriteStream(new WebConnectionStream(this, httpWebRequest));
        }