Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Ticket #598: eagain.patch

  • _cpwsgiserver.py

    old new  
    2424# de-dupe the list 
    2525socket_errors_to_ignore = dict.fromkeys(socket_errors_to_ignore).keys() 
    2626 
     27socket_errors_to_retry = [] 
     28for _ in ("EAGAIN", ): 
     29    if _ in dir(errno): 
     30        socket_errors_to_retry.append(getattr(errno, _)) 
     31# de-dupe the list 
     32socket_errors_to_retry = dict.fromkeys(socket_errors_to_retry).keys() 
    2733 
     34 
    2835class HTTPRequest(object): 
    2936     
    3037    stderr = sys.stderr 
     
    144151        if not self.sent_headers: 
    145152            self.sent_headers = True 
    146153            self.send_headers() 
    147         self.wfile.write(d) 
    148         self.wfile.flush() 
     154        while True: 
     155            try: 
     156                self.wfile.write(d) 
     157                self.wfile.flush() 
     158                break 
     159            except socket.error, e: 
     160                errno = e.args[0] 
     161                if errno not in socket_errors_to_retry: 
     162                    raise 
    149163     
    150164    def send_headers(self): 
    151165        if "content-length" not in self.outheaderkeys: 

Hosted by WebFaction

Log in as guest/cpguest to create tickets