# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: smaudet@my.trine.edu-20130410203340-o7wgn9nrg1i4oslw # target_branch: http://bazaar.launchpad.net/~jaap.karssenberg/zim\ # /pyzim/ # testament_sha1: 9c4c5727196c613900b823cf89a7bb77162f9272 # timestamp: 2013-04-10 16:34:12 -0400 # message: Windows Server fixes # base_revision_id: pardus@cpan.org-20130323163907-9tckjm4cx9kv8yae # # Begin patch === modified file 'zim/www.py' --- zim/www.py 2012-03-04 18:44:46 +0000 +++ zim/www.py 2013-04-10 20:33:40 +0000 @@ -371,6 +371,8 @@ # open sockets for connections self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.socket.setblocking(1); + self.socket.settimeout(None); hostname = '' # means all interfaces if not self.public: hostname = 'localhost' @@ -388,7 +390,7 @@ '''Close the socket and stop listening @emits: stopped ''' - if not self.running: + if not self.running: return # ignore silently if self._io_event: @@ -411,16 +413,34 @@ # read data rfile = clientsocket.makefile('rb') - requestline = rfile.readline() - command, path, version = requestline.split() - if version[5:] != 0.9: # HTTP/0.9 does not do headers + requestline='' + command, path, version = '', '', '' + try: + requestline = rfile.readline() + except Exception, error: + logger.info("expected error") + logger.error(error) + clientsocket.close(); + return True; + + if(requestline==None or requestline==''): + clientsocket.close() + return True; + + if(requestline!=None and requestline!=''): + command, path, version = requestline.split() + if version[5:] != '0.9': # HTTP/0.9 does not do headers headerlines = [] while True: - line = rfile.readline() - if not line or line.isspace(): - break - else: - headerlines.append(line) + #backup plan - brute force wait here + try: + line = rfile.readline() + if not line or line.isspace(): + break + else: + headerlines.append(line) + except socket.error, msg: + pass #~ headers = HeadersDict(''.join(headerlines)) #~ else: #~ headers = {} # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWaTP9iMAAhPfgHAweOf//3JB TIq////wUAS6q01gnubs4udF3DJCaCekYU9oppsmQpnqT9Q0IwjyanpAGRJkyMECpvImpkyDRoxG mQAMgJEgSJ5MjUeoZMqfqjJ+qaPSaeoA/VGh6gDmEwCYATCYTTAAAJk00DCSiGonlPJpqeiepmjU emKZANNAAA9SQIJpAxtoabGmb2IN+Hp+UUQ22PisVPSIarGttvW3kF8Iv2MLpQ6VKCRbhHEyC9Fw Mm306xuEvx+T8NrbRLqvWdZYO/HKo3VmUpUnWd2o8hx7IXWfT1rh+OhqJs/t0LUihffwHHMGwI0c 4+pkAUJOKLEIkjyQb9k1u/5+OOJJ/Bo7PPzJSYyAfj4YrNnCOyumZW+ndC5u8SrmDhvfcN4jy6fv UYgeANS0c+8z0i0GFFASwYE1VxYN6g0oMi5LrutKdvKiDQOIol93h0M5qrs0EoF2y6JizIStyUoI hUC6bLLhSL0We7y43L3MH5EmvdEtjnaCq1b1kD2DpDj2SPFJnnzmkd69bHmcS5eLKd+HtFfsdnXb h2whXwLfWlVI1lXM9ZLvrt2zDS/WiUvcQGtNhyk5pmgMQXiCUGUl1peWDppQPiFHjOUwaUMS8GKT WocrkgwWbAMzDhmJdB1BmKOETap40r5E8DGg/louzrnC/KjpiahHOMDdbnCDzuOlprG9qJIyiRap feAwt6QWUYIXHgwBZhvodWSVWNkobhYMxFBU4bHiwETFHmxWHDETFBH+n1AyPLmnbcg5z6aYbfB7 Mo73pR14QMJtOrmXIrZ9uGwZ95odWvfS/u4SY/S0Dj6PP0+wNaXZdext/vEjUfD+vrH/NFlN2hYE W54dkeDI01bCgfG8N97+jtHSI3WKW0O6DbPPzvRAQ1eY78i9pARqpmhRQAb12D645H3ozdWVOvlT 1kw9sGh1wwqhx8T3C3VM1XmCsr4i4INHMCmt5QZgHVbM/sYDBRR4lFxUYrMDmQYFrXpZ9yJr5u6D FrJxECJiJbyJzCoXcJvqOjnvNvpmiyiB6zU+Oj8eBNR267M9k0wn7WYpFyUKzzmoHuUNwdQVksDx fpfY5l9nkilxnO3ThHXPOLiZOBCExigHr+O6kxyEYGsY7QwfOYbaxQEMIUPiGYrl02o0lBYJ0xKN CLqjH5BV4CwUrWS+t6ZlILc4UnwsyLhylqC+ECRJgsd3Y7HrqowcRGxGsIdO/XM56tNUidSlmBiN q0A4MLQ2byGpxTioYZxUtYFkefo7N1wcJdEwM1xeJSwl0A6UEG0sYJ/IneyGpGohQD6CatIwZVKb bQ2CbF7OedlvFcirQ1x3u4W1GeykHarGti/5e2xMaOAdnMGvKRuHwBxOWFMtsZ4gbEKh5FLR56X2 PZrdBTE4mCgCE4hDQ0csImE6lJI5X83DiDXzmGoNwtfy6JRNYkp5eCKiK9TLLKhRai2cz6XeFJyq eOO43RgaYTOW7E5JuM1it+wXxPePX7qmOJm8c9jhpXIiML6MKuerSHISvGLmWcxc3hOY1tMrtHUF LCRM1JT3bPYiaZZQL5EnHolqbzRymEMcHWxyjTSdRhOFSY8z0BjYbbU6TEPipWSF2kpsJREE5rhE mqL/i7kinChIUmf7EYA=