Author: siwuzzz
Date: Mon Jul  9 17:22:53 2007
New Revision: 206

Modified:
   trunk/clients/cs/src/core/request.cs

Log:
src/core/request.cs:
- More robust handling of gzipped streams.

Modified: trunk/clients/cs/src/core/request.cs
==============================================================================
--- trunk/clients/cs/src/core/request.cs        (original)
+++ trunk/clients/cs/src/core/request.cs        Mon Jul  9 17:22:53 2007
@@ -194,8 +194,8 @@
         protected bool disposed; 
         /// <summary>set wheter or not this request should use GZip</summary>
         private bool useGZip;
-
-        private GZipStream  gzippedStream;
+        /// <summary>stream from the response</summary>
+        private Stream  responseStream;
 
    
         //////////////////////////////////////////////////////////////////////
@@ -431,8 +431,6 @@
                 }
                 Tracing.TraceCall("calling the real execution over the 
webresponse");
                 this.webResponse = this.webRequest.GetResponse(); 
-                if (this.webResponse != null)
-                    this.useGZip = 
(string.Compare(((HttpWebResponse)this.webResponse).ContentEncoding, "gzip", 
true) == 0);
             }
             catch (WebException e)
             {
@@ -440,11 +438,17 @@
                 GDataRequestException gde = new 
GDataRequestException("Execution of request failed: " + 
this.targetUri.ToString(), e);
                 throw gde;
             }
+            if (this.webResponse != null)
+                this.responseStream = this.webResponse.GetResponseStream();
             if (this.webResponse is HttpWebResponse)
             {
                 HttpWebResponse response = this.webResponse as HttpWebResponse;
                 HttpWebRequest request = this.webRequest as HttpWebRequest;
 
+                this.useGZip = (string.Compare(response.ContentEncoding, 
"gzip", true) == 0);
+                if (this.useGZip == true)
+                    this.responseStream = new GZipStream(this.responseStream, 
CompressionMode.Decompress);
+
                 Tracing.Assert(response != null, "The response should not be 
NULL"); 
                 Tracing.Assert(request != null, "The request should not be 
NULL"); 
 
@@ -510,17 +514,7 @@
         //////////////////////////////////////////////////////////////////////
         public virtual Stream GetResponseStream()
         {
-            if (this.webResponse == null)
-                return (null);
-
-            if (this.useGZip == true)
-            {
-                if (this.gzippedStream == null)
-                    this.gzippedStream = new 
GZipStream(this.webResponse.GetResponseStream(), CompressionMode.Decompress);
-                return (this.gzippedStream);
-            }
-            else
-                return this.webResponse.GetResponseStream();
+            return (this.responseStream);
         }
         
/////////////////////////////////////////////////////////////////////////////
 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Data API" group.
To post to this group, send email to google-help-dataapi@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to