<pierre.vi...@postfinance.ch> writes: > Yes you are right, I have not looked at the wireshark output good > enough! Unfortunately I cannot change it in our HttpProxy: this > change of the case of the header keys is performed by the underlying > HTTP Layer in java and not by our own code. I think the reason for > this is that the HTTP specification states that the header-keys are > case-insensitive (see > f.i. > http://stackoverflow.com/questions/5258977/are-http-headers-case-sensitive).
It's fixed on trunk and proposed for the next release. > Maybe if this bug is fixed in the svn client then the segmentation > fault would be solved? There might be another header field which is > not managed correctly because of case-sensitiveness? I noticed that your proxy is changing the status line by dropping the reason-phrase: HTTP/1.1 207 Multi-Status to HTTP/1.1 207 The client is allowed to ignore the reason-phrase but I don't know whether the server is allowed to omit it. A strict reading of the RFC may require at least a space after the 207. However, this is not the cause of the crash, at least on my machine. I can't reproduce the crash. I see the trace has "Connection: close" so the problem is not probably not extra data between requests. The trace is for a Windows client, is it possible to get a trace for the Linux client? I've converted the trace to a script. Does your Windows client crash when run against the dummy server in this script? Does the Linux client crash?
#!/usr/bin/python import SocketServer import re class MyTCPHandler(SocketServer.StreamRequestHandler): responses = [ ( """HTTP/1.1 200 OK Svn-me-resource: /svn/t_sponis_testrepo/!svn/me Svn-txn-root-stub: /svn/t_sponis_testrepo/!svn/txr Svn-supported-posts: create-txn, create-txn-with-props Content-type: text/xml; charset="utf-8" Content-length: 201 Svn-repository-root: /svn/t_sponis_testrepo Dav: 1,2, version-control,checkout,working-resource, merge,baseline,activity,version-controlled-collection, http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/log-revprops, http://subversion.tigris.org/xmlns/dav/svn/atomic-revprops, http://subversion.tigris.org/xmlns/dav/svn/partial-replay, http://subversion.tigris.org/xmlns/dav/svn/inherited-props, http://subversion.tigris.org/xmlns/dav/svn/inline-props, http://subversion.tigris.org/xmlns/dav/svn/reverse-file-revs, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/ephemeral-txnprops, http://subversion.tigris.org/xmlns/dav/svn/replay-rev-resource Ch.nevis.session.secroles: auth.strong,idma_Benutzer,infplat_user,esclienttest_roleBC,esclienttest_roleA,esclienttest_roleB,depo_Admin,itam_Leser,itam_Administrator,itsms_asset_viewer,itsms_svc_req_usr,testsaml_admin,global.allow,acc.idma,acc.infplat,acc.esclienttest,acc.depo,acc.itam,acc.itsms,acc.testsaml Svn-allow-bulk-updates: On Ms-author-via: DAV Svn-vtxn-stub: /svn/t_sponis_testrepo/!svn/vtxn Svn-vtxn-root-stub: /svn/t_sponis_testrepo/!svn/vtxr Svn-rev-root-stub: /svn/t_sponis_testrepo/!svn/rvr Connection: close Svn-repository-uuid: 0926ec5e-c495-11e3-b81a-bb1aca739395 Svn-youngest-rev: 16 Server: Apache Date: Fri, 09 Jan 2015 06:26:26 GMT Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT Svn-repository-mergeinfo: yes Svn-rev-stub: /svn/t_sponis_testrepo/!svn/rev Svn-txn-stub: /svn/t_sponis_testrepo/!svn/txn <?xml version="1.0" encoding="utf-8"?> <D:options-response xmlns:D="DAV:"> <D:activity-collection-set><D:href>/svn/t_sponis_testrepo/!svn/act/</D:href></D:activity-collection-set></D:options-response> """ ), ( """HTTP/1.1 200 OK Content-type: text/xml; charset="utf-8" Content-length: 97 Ch.nevis.session.secroles: auth.strong,idma_Benutzer,infplat_user,esclienttest_roleBC,esclienttest_roleA,esclienttest_roleB,depo_Admin,itam_Leser,itam_Administrator,itsms_asset_viewer,itsms_svc_req_usr,testsaml_admin,global.allow,acc.idma,acc.infplat,acc.esclienttest,acc.depo,acc.itam,acc.itsms,acc.testsaml Dav: 1,2, version-control,checkout,working-resource, merge,baseline,activity,version-controlled-collection, http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/log-revprops, http://subversion.tigris.org/xmlns/dav/svn/atomic-revprops, http://subversion.tigris.org/xmlns/dav/svn/partial-replay, http://subversion.tigris.org/xmlns/dav/svn/inherited-props, http://subversion.tigris.org/xmlns/dav/svn/inline-props, http://subversion.tigris.org/xmlns/dav/svn/reverse-file-revs, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo Ms-author-via: DAV Connection: close Server: Apache Date: Fri, 09 Jan 2015 06:26:26 GMT Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT <?xml version="1.0" encoding="utf-8"?> <D:options-response xmlns:D="DAV:"> </D:options-response> """ ), ( """HTTP/1.1 207 Content-type: text/xml; charset="utf-8" Content-length: 673 Ch.nevis.session.secroles: auth.strong,idma_Benutzer,infplat_user,esclienttest_roleBC,esclienttest_roleA,esclienttest_roleB,depo_Admin,itam_Leser,itam_Administrator,itsms_asset_viewer,itsms_svc_req_usr,testsaml_admin,global.allow,acc.idma,acc.infplat,acc.esclienttest,acc.depo,acc.itam,acc.itsms,acc.testsaml Connection: close Server: Apache Date: Fri, 09 Jan 2015 06:26:27 GMT <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:" xmlns:ns1="http://subversion.tigris.org/xmlns/dav/" xmlns:ns0="DAV:"> <D:response xmlns:lp1="DAV:" xmlns:lp2="http://subversion.tigris.org/xmlns/dav/"> <D:href>/svn/t_sponis_testrepo/</D:href> <D:propstat> <D:prop> <lp1:version-controlled-configuration><D:href>/svn/t_sponis_testrepo/!svn/vcc/default</D:href></lp1:version-controlled-configuration> <lp1:resourcetype><D:collection/></lp1:resourcetype> <lp2:baseline-relative-path/> <lp2:repository-uuid>0926ec5e-c495-11e3-b81a-bb1aca739395</lp2:repository-uuid> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus> """ ), ( """HTTP/1.1 207 Content-type: text/xml; charset="utf-8" Content-length: 425 Ch.nevis.session.secroles: auth.strong,idma_Benutzer,infplat_user,esclienttest_roleBC,esclienttest_roleA,esclienttest_roleB,depo_Admin,itam_Leser,itam_Administrator,itsms_asset_viewer,itsms_svc_req_usr,testsaml_admin,global.allow,acc.idma,acc.infplat,acc.esclienttest,acc.depo,acc.itam,acc.itsms,acc.testsaml Connection: close Server: Apache Date: Fri, 09 Jan 2015 06:26:27 GMT <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> <D:response xmlns:lp1="DAV:" xmlns:lp2="http://subversion.tigris.org/xmlns/dav/"> <D:href>/svn/t_sponis_testrepo/!svn/vcc/default</D:href> <D:propstat> <D:prop> <lp1:checked-in><D:href>/svn/t_sponis_testrepo/!svn/bln/16</D:href></lp1:checked-in> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus> """ ), (''), ] response = 0 def handle(self): clen = None chunked = False while True: self.data = self.rfile.readline().strip() print "read: " + self.data if self.data == "Transfer-Encoding: chunked": chunked = True m = re.match('Content-Length: (.*)', self.data) if m: clen = int(m.group(1)) if self.data == '': break if chunked: # Handling one chunk is enough for now self.data = self.rfile.readline().strip() print "read: " + self.data clen = int(self.data, 16) if clen: self.data = self.rfile.read(clen) print "read: " + self.data if chunked: self.data = self.rfile.readline().strip() self.data = self.rfile.readline().strip() print "read: " + self.data self.wfile.write(MyTCPHandler.responses[MyTCPHandler.response]) MyTCPHandler.response += 1 if MyTCPHandler.response == len(MyTCPHandler.responses): MyTCPHandler.response = 0 if __name__ == "__main__": SocketServer.TCPServer.allow_reuse_address = True server = SocketServer.TCPServer(("localhost", 7777), MyTCPHandler) server.serve_forever()
-- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*