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

Changeset 1562

Show
Ignore:
Timestamp:
12/23/06 13:37:35
Author:
fumanchu
Message:

wsgiserver: Moved 'bind' inner func out to method so subclasses can override socket options more easily.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/test/benchmark.py

    r1561 r1562  
    8585    'server.max_request_header_size': 0, 
    8686    'server.max_request_body_size': 0, 
     87    'engine.deadlock_poll_freq': 0, 
    8788    # Cheat mode on ;) 
    8889    'tools.log_tracebacks.on': False, 
  • trunk/cherrypy/wsgiserver.py

    r1555 r1562  
    748748        # trap those exceptions in whatever code block calls start(). 
    749749        self._interrupt = None 
    750          
    751         def bind(family, type, proto=0): 
    752             """Create (or recreate) the actual socket object.""" 
    753             self.socket = socket.socket(family, type, proto) 
    754             self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    755             if self.ssl_certificate and self.ssl_private_key: 
    756                 if SSL is None: 
    757                     raise ImportError("You must install pyOpenSSL to use HTTPS.") 
    758                  
    759                 # See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442473 
    760                 ctx = SSL.Context(SSL.SSLv23_METHOD) 
    761                 ctx.use_privatekey_file(self.ssl_private_key) 
    762                 ctx.use_certificate_file(self.ssl_certificate) 
    763                 self.socket = SSLConnection(ctx, self.socket) 
    764                 self.populate_ssl_environ() 
    765             self.socket.bind(self.bind_addr) 
    766750         
    767751        # Select the appropriate socket 
     
    806790            af, socktype, proto, canonname, sa = res 
    807791            try: 
    808                 bind(af, socktype, proto) 
     792                self.bind(af, socktype, proto) 
    809793            except socket.error, msg: 
    810794                if self.socket: 
     
    838822                    time.sleep(0.1) 
    839823                raise self.interrupt 
     824     
     825    def bind(self, family, type, proto=0): 
     826        """Create (or recreate) the actual socket object.""" 
     827        self.socket = socket.socket(family, type, proto) 
     828        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
     829##        self.socket.setsockopt(socket.SOL_SOCKET, socket.TCP_NODELAY, 1) 
     830        if self.ssl_certificate and self.ssl_private_key: 
     831            if SSL is None: 
     832                raise ImportError("You must install pyOpenSSL to use HTTPS.") 
     833             
     834            # See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442473 
     835            ctx = SSL.Context(SSL.SSLv23_METHOD) 
     836            ctx.use_privatekey_file(self.ssl_private_key) 
     837            ctx.use_certificate_file(self.ssl_certificate) 
     838            self.socket = SSLConnection(ctx, self.socket) 
     839            self.populate_ssl_environ() 
     840        self.socket.bind(self.bind_addr) 
    840841     
    841842    def tick(self): 

Hosted by WebFaction

Log in as guest/cpguest to create tickets