After 'upgrading' my SOAP application from 0.55 to 0.60 I lost the facilitity of compression.
The following HTTP protocol shows the differences between 0.55 and 0.60.
---------------------------------------------------------
The original (0.55/0.55) SOAP application behaviour:
Request from 0.55 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: deflate
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.55
Content-Encoding: deflate
Content-Length: 20958
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.55 server ...
HTTP/1.1 200 OK
Date: Mon, 14 Nov 2005 21:30:14 GMT
Server: libwww-perl-daemon/1.36
Content-Encoding: deflate
Content-Length: 20943
Content-Type: text/xml; charset=utf-8
SOAPServer: SOAP::Lite/Perl/0.55
Compression works (0.55/0.55) - OK!
---------------------------------------------------------
The mixed version (0.55/0.60) SOAP application behaviour:
Request from 0.55 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: deflate
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.55
Content-Encoding: deflate
Content-Length: 20958
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.60 server ...
HTTP/1.1 200 OK
Date: Mon, 14 Nov 2005 21:39:25 GMT
Server: libwww-perl-daemon/1.36
Content-Encoding: deflate
Content-Length: 20931
Content-Type: text/xml; charset=utf-8
SOAPServer: SOAP::Lite/Perl/0.60
Compression works (0.55/0.60) - OK!
---------------------------------------------------------
The mixed version (0.60/0.55) SOAP application behaviour:
Request from 0.60 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: gzip
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.60
Content-Encoding: gzip
Content-Length: 662
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.55 server ...
HTTP/1.1 415 Unsupported Media Type
Date: Mon, 14 Nov 2005 21:53:14 GMT
Server: libwww-perl-daemon/1.36
Compression will not work (0.60/0.55) and
Request will be repeated from 0.60 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: gzip
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.60
Content-Length: 1743
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.60 server is now ...
HTTP/1.1 200 OK
Date: Mon, 14 Nov 2005 21:53:14 GMT
Server: libwww-perl-daemon/1.36
Content-Length: 682
Content-Type: text/xml; charset=utf-8
SOAPServer: SOAP::Lite/Perl/0.55
No compression (0.60/0.55) at all!
---------------------------------------------------------
The 'upgraded' (0.60/0.60) SOAP application behaviour:
Request from 0.60 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: gzip
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.60
Content-Encoding: gzip
Content-Length: 662
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.60 server ...
HTTP/1.1 415 Unsupported Media Type
Date: Mon, 14 Nov 2005 22:07:03 GMT
Server: libwww-perl-daemon/1.36
Compression will not work (0.60/0.60) and
Request will be repeated from 0.60 client ...
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept-Encoding: gzip
Host: localhost:22221
User-Agent: SOAP::Lite/Perl/0.60
Content-Length: 1743
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:SOAPSvc/Master/Repository#save"
Response from 0.60 server is now ...
HTTP/1.1 200 OK
Date: Mon, 14 Nov 2005 22:07:04 GMT
Server: libwww-perl-daemon/1.36
Content-Length: 730
Content-Type: text/xml; charset=utf-8
SOAPServer: SOAP::Lite/Perl/0.60
No compression (0.60/0.60) at all!
---------------------------------------------------------
Conclusions:
The 0.55 client sends
Content-Encoding: deflate
which will be supported by 0.55 and 0.60 server.
The 0.60 client sends
Content-Encoding: gzip
which will *not* be supported by 0.55 and 0.60 server.
Questions:
- Why was 'deflate' replaced through 'zgip'?
- How could the compression be used under 0.60/0.60?
- Is the content encoding 'gzip' buggy?
tom
thw@cpan.org