In Python 2.6/3.1, xmlrpclib.Transport.parse_response() accepts a file like object. But Python 2.7/3.2 requires a HTTPResponse object because parse_response() calls response.getheader() method.
The patch moves the call to .getheader() in single_request() to accept a file-like object in parse_response(). But I don't understand why the gzip support is implemented in xmlrpclib instead of httplib.
The problem is related to M2Crypto which pass a BIO object (file-like object, without .getresponse() method).

I think, the file-like object behavior can be brought back. No need to handling gzipped file object in the patch, if the earlier behavior was not handling it. There is a separate issue to keep track of handling gzip encoded content in httplib. I shall try to get this moving.

The patch looks fine to me. If it runs and everyone is happy, by all means lets put it in.
(I agree that the zlib stuff _should_ be handled elsewhere, but for reasons of expediency it was put into this module)

Instead of tossing around the GzipDecoding code from one method to another (which would in turn change the return value from those methods), I thought is appropriate to do a change in parse_response itself, so that it verifies that it is a http response (new kind) before attempting header retrieval. If it an old kind of response (a file object), it does not do a getheader call.
This is committed in r87111 for release27-maint. I shall merge this into other branches.
This does not change any return value from the methods.
- Tests look bit more involved than I expected. The correct way to test this would be to create a FakeTransport object which exhibited the previous older behavior of getting the response via http.getfile method.
The Fakesocket and Transport tests are not actually testing the response. So I could not exercise the "response part".(Perhaps this is reason it was not caught in the first place). The request part are exercised properly.
If someone has a patch for the tests to exercise response of Fakesocket object and Transport class tests, welcome. Otherwise I shall try to come up with one and add this case too.