Hello,

I recently had trouble installing bundles through the OBR: the JAR
handling code would spit errors about not being able to open the ZIP
file.
With Wireshark, I tracked the problem down to the JAR file having been
gzipped, but not having been uncompressed on the computer side.

Even if they're not explicitly asked for it (which is the case when
downloading a bundle through the OBR), servers are allowed by the
HTTP/1.1 spec to return encoded content:
"If no Accept-Encoding field is present in a request, the server MAY
assume that the client will accept any content coding."
( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 )

I worked around the problem the following way:

Index: 
bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FileUtil.java
===================================================================
--- 
bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FileUtil.java   
 (révision 1189686)
+++ 
bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FileUtil.java   
 (copie de travail)
@@ -204,6 +204,14 @@
         // Do it the manual way to have a chance to
         // set request properties as proxy auth (EW).
         setProxyAuth(conn);
+
+        // Force identity encoding
+        if ("http".equals(conn.getURL().getProtocol())
+            || "https".equals(conn.getURL().getProtocol()))
+        {
+            conn.setRequestProperty("Accept-Encoding", "");
+        }
+
         try
         {
             return conn.getInputStream();


In the beginning, I also added "conn.setUseCaches(false);" to
purge the local caching proxy's cache, but that was a transient
workaround for gzipped bundles having been cached, which
is no longer necessary after non-encoded bundles have
replaced them in the cache.



Regards,
Lionel.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to