Example #1
0
        protected virtual XmlReader GetReaderForMessage(SoapServerMessage message, int bufferSize)
        {
            XmlTextReader reader;
            Encoding      encoding = RequestResponseUtils.GetEncoding2(message.ContentType);

            if (bufferSize < 0x200)
            {
                bufferSize = 0x200;
            }
            int  readTimeout = WebServicesSection.Current.SoapEnvelopeProcessing.ReadTimeout;
            long num2        = (readTimeout < 0) ? 0L : (readTimeout * 0x989680L);
            long ticks       = DateTime.UtcNow.Ticks;
            long timeout     = ((0x7fffffffffffffffL - num2) <= ticks) ? 0x7fffffffffffffffL : (ticks + num2);

            if (encoding != null)
            {
                if (timeout == 0x7fffffffffffffffL)
                {
                    reader = new XmlTextReader(new StreamReader(message.Stream, encoding, true, bufferSize));
                }
                else
                {
                    reader = new SoapEnvelopeReader(new StreamReader(message.Stream, encoding, true, bufferSize), timeout);
                }
            }
            else if (timeout == 0x7fffffffffffffffL)
            {
                reader = new XmlTextReader(message.Stream);
            }
            else
            {
                reader = new SoapEnvelopeReader(message.Stream, timeout);
            }
            reader.DtdProcessing = DtdProcessing.Prohibit;
            reader.Normalization = true;
            reader.XmlResolver   = null;
            return(reader);
        }
 protected virtual XmlReader GetReaderForMessage(SoapServerMessage message, int bufferSize) {
     Encoding enc = RequestResponseUtils.GetEncoding2(message.ContentType);
     if (bufferSize < 512)
         bufferSize = 512;
     int readTimeout = WebServicesSection.Current.SoapEnvelopeProcessing.ReadTimeout;
     Int64 timeout = readTimeout < 0 ? 0L : (Int64)readTimeout * 10000000;
     Int64 nowTicks = DateTime.UtcNow.Ticks;
     Int64 timeoutTicks = Int64.MaxValue - timeout <= nowTicks ? Int64.MaxValue : nowTicks + timeout;
     XmlTextReader reader;
     if (enc != null) {
         if (timeoutTicks == Int64.MaxValue) {
             reader = new XmlTextReader(new StreamReader(message.Stream, enc, true, bufferSize));
         }
         else {
             reader = new SoapEnvelopeReader(new StreamReader(message.Stream, enc, true, bufferSize), timeoutTicks);
         }
     }
     else {
         if (timeoutTicks == Int64.MaxValue) {
             reader = new XmlTextReader(message.Stream);
         }
         else {
             reader = new SoapEnvelopeReader(message.Stream, timeoutTicks);
         }
     }
     reader.DtdProcessing = DtdProcessing.Prohibit;
     reader.Normalization = true;
     reader.XmlResolver = null;
     return reader;
 }