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

Changeset 493

Show
Ignore:
Timestamp:
07/22/05 04:11:18
Author:
fumanchu
Message:

1. Builtin HTTP servers now check for free port.
2. Bugfix in covercp (had bad data if server restarted between requests).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/covercp.py

    r483 r493  
    146146        import cherrypy 
    147147        cherrypy.response.headerMap['Content-Type'] = 'text/plain' 
     148        coverage.get_ready() 
    148149        filename, statements, excluded, missing, _ = coverage.analysis2(name) 
    149150        return self.annotated_file(filename, statements, excluded, missing) 
  • trunk/cherrypy/server.py

    r465 r493  
    118118        run_server(serverClass) 
    119119 
     120def check_port(host, port): 
     121    """Raise an error if the given port is not free on the given host.""" 
     122     
     123    import socket 
     124    try: 
     125        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     126        s.connect((host, int(port))) 
     127        s.close() 
     128        raise IOError("Port %s is in use on %s; perhaps the previous " 
     129                      "server did not shut down properly." % (port, host)) 
     130    except socket.error: 
     131        pass 
     132 
    120133def run_server(serverClass=None): 
    121134    """Prepare the requested server and then run it.""" 
     
    134147        serverClass = _cpwsgi.WSGIServer 
    135148     
    136     cherrypy._httpserver = serverClass() 
    137      
    138149    if cherrypy.config.get('server', 'socketPort'): 
    139         onWhat = ("socket: ('%s', %s)" 
    140                   % (cherrypy.config.get('server.socketHost'), 
    141                      cherrypy.config.get('server.socketPort'))) 
     150        host = cherrypy.config.get('server.socketHost') 
     151        port = cherrypy.config.get('server.socketPort') 
     152        check_port(host, port) 
     153        onWhat = "socket: ('%s', %s)" % (host, port) 
    142154    else: 
    143155        onWhat = "socket file: %s" % cherrypy.config.get('server.socketFile') 
    144156    cherrypy.log("Serving HTTP on %s" % onWhat, 'HTTP') 
    145157     
    146     # Start the http server. 
     158    # Start the http server. This must be done after check_port, above. 
     159    cherrypy._httpserver = serverClass() 
    147160    try: 
    148161        cherrypy._appserver_state = 1 

Hosted by WebFaction

Log in as guest/cpguest to create tickets