Comments
Patch
@@ -1454,6 +1454,10 @@ The full set of options is:
``port``
Port to listen on. Default is 8000.
+``ports``
+ Listen on the first available port from the ``[port, port + ports)``
+ range. Default is 1.
+
``prefix``
Prefix path to serve from. Default is '' (server root).
@@ -322,9 +322,18 @@ def create_server(ui, app):
import mimetypes; mimetypes.init()
address = ui.config('web', 'address', '')
- port = util.getport(ui.config('web', 'port', 8000))
- try:
- return cls(ui, app, (address, port), handler)
- except socket.error, inst:
- raise util.Abort(_("cannot start server at '%s:%d': %s")
- % (address, port, inst.args[1]))
+ base = util.getport(ui.config('web', 'port', 8000))
+ ports = ui.configint('web', 'ports', 1)
+ last = base + ports
+ if ports <= 0:
+ raise util.Abort(_("web.ports must be positive"))
+
+ error = 'unknown error'
+ for port in range(base, last):
+ try:
+ return cls(ui, app, (address, port), handler)
+ except socket.error, inst:
+ error = inst.args[1]
+
+ raise util.Abort(_("cannot start server at '%s:%d': %s")
+ % (address, port, error))