##// END OF EJS Templates
hgweb: clarify which address and port can/cannot be bound at startup (bug 769)...
Stephen Deasey -
r6262:de7256c8 default
parent child Browse files
Show More
@@ -2461,10 +2461,7 b' def serve(ui, repo, **opts):'
2461 class service:
2461 class service:
2462 def init(self):
2462 def init(self):
2463 util.set_signal_handler()
2463 util.set_signal_handler()
2464 try:
2464 self.httpd = hgweb.server.create_server(parentui, repo)
2465 self.httpd = hgweb.server.create_server(parentui, repo)
2466 except socket.error, inst:
2467 raise util.Abort(_('cannot start server: ') + inst.args[1])
2468
2465
2469 if not ui.verbose: return
2466 if not ui.verbose: return
2470
2467
@@ -2473,12 +2470,12 b' def serve(ui, repo, **opts):'
2473 else:
2470 else:
2474 prefix = ''
2471 prefix = ''
2475
2472
2476 if self.httpd.port != 80:
2473 port = ':%d' % self.httpd.port
2477 ui.status(_('listening at http://%s:%d/%s\n') %
2474 if port == ':80':
2478 (self.httpd.addr, self.httpd.port, prefix))
2475 port = ''
2479 else:
2476
2480 ui.status(_('listening at http://%s/%s\n') %
2477 ui.status(_('listening at http://%s%s/%s (%s:%d)\n') %
2481 (self.httpd.addr, prefix))
2478 (self.httpd.fqaddr, port, prefix, self.httpd.addr, self.httpd.port))
2482
2479
2483 def run(self):
2480 def run(self):
2484 self.httpd.serve_forever()
2481 self.httpd.serve_forever()
@@ -3115,8 +3112,8 b' table = {'
3115 ('d', 'daemon', None, _('run server in background')),
3112 ('d', 'daemon', None, _('run server in background')),
3116 ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
3113 ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
3117 ('E', 'errorlog', '', _('name of error log file to write to')),
3114 ('E', 'errorlog', '', _('name of error log file to write to')),
3118 ('p', 'port', 0, _('port to use (default: 8000)')),
3115 ('p', 'port', 0, _('port to listen on (default: 8000)')),
3119 ('a', 'address', '', _('address to use')),
3116 ('a', 'address', '', _('address to listen on (default: all interfaces)')),
3120 ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
3117 ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
3121 ('n', 'name', '',
3118 ('n', 'name', '',
3122 _('name to show in web pages (default: working dir)')),
3119 _('name to show in web pages (default: working dir)')),
@@ -253,13 +253,6 b' def create_server(ui, repo):'
253 return hgwebobj
253 return hgwebobj
254 self.application = make_handler()
254 self.application = make_handler()
255
255
256 addr = address
257 if addr in ('', '::'):
258 addr = socket.gethostname()
259
260 self.addr, self.port = addr, port
261 self.prefix = prefix
262
263 if ssl_cert:
256 if ssl_cert:
264 try:
257 try:
265 from OpenSSL import SSL
258 from OpenSSL import SSL
@@ -273,6 +266,15 b' def create_server(ui, repo):'
273 self.server_bind()
266 self.server_bind()
274 self.server_activate()
267 self.server_activate()
275
268
269 self.addr, self.port = self.socket.getsockname()[0:2]
270 self.prefix = prefix
271
272 self.fqaddr = socket.getfqdn(address)
273 try:
274 socket.getaddrbyhost(self.fqaddr)
275 except:
276 fqaddr = address
277
276 class IPv6HTTPServer(MercurialHTTPServer):
278 class IPv6HTTPServer(MercurialHTTPServer):
277 address_family = getattr(socket, 'AF_INET6', None)
279 address_family = getattr(socket, 'AF_INET6', None)
278
280
@@ -292,4 +294,5 b' def create_server(ui, repo):'
292 else:
294 else:
293 return MercurialHTTPServer((address, port), handler)
295 return MercurialHTTPServer((address, port), handler)
294 except socket.error, inst:
296 except socket.error, inst:
295 raise util.Abort(_('cannot start server: %s') % inst.args[1])
297 raise util.Abort(_("cannot start server at '%s:%d': %s")
298 % (address, port, inst.args[1]))
@@ -9,7 +9,7 b" hg commit -A -d '0 0' -m 1"
9 hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=../hg1.pid
9 hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=../hg1.pid
10 hg serve -p $HGPORT1 -d --pid-file=../hg2.pid
10 hg serve -p $HGPORT1 -d --pid-file=../hg2.pid
11 # Test server address cannot be reused
11 # Test server address cannot be reused
12 hg serve -p $HGPORT1 2>&1 | sed -e 's/abort: cannot start server:.*/abort: cannot start server:/'
12 hg serve -p $HGPORT1 2>&1 | sed -e "s/abort: cannot start server at ':$HGPORT1':.*/abort: cannot start server at ':$HGPORT1':/"
13 cd ..
13 cd ..
14 cat hg1.pid hg2.pid >> $DAEMON_PIDS
14 cat hg1.pid hg2.pid >> $DAEMON_PIDS
15
15
@@ -1,5 +1,5 b''
1 adding foo
1 adding foo
2 abort: cannot start server:
2 abort: cannot start server at ':20060':
3 % clone via stream
3 % clone via stream
4 streaming all changes
4 streaming all changes
5 XXX files to transfer, XXX bytes of data
5 XXX files to transfer, XXX bytes of data
@@ -14,33 +14,38 b' if [ -f access.log ]; then'
14 fi
14 fi
15
15
16 echo % With -v
16 echo % With -v
17 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v | sed -e 's,:[0-9][0-9]*/,/,'
17 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v \
18 | sed -e 's/:[0-9][0-9]*//g' -e 's/localhost\.localdomain/localhost/'
18 cat hg.pid >> "$DAEMON_PIDS"
19 cat hg.pid >> "$DAEMON_PIDS"
19 sleep 1
20 sleep 1
20 kill `cat hg.pid`
21 kill `cat hg.pid`
21 sleep 1
22 sleep 1
22
23
23 echo % With --prefix foo
24 echo % With --prefix foo
24 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix foo | sed -e 's,:[0-9][0-9]*/,/,'
25 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix foo \
26 | sed -e 's/:[0-9][0-9]*//g' -e 's/localhost\.localdomain/localhost/'
25 cat hg.pid >> "$DAEMON_PIDS"
27 cat hg.pid >> "$DAEMON_PIDS"
26 sleep 1
28 sleep 1
27 kill `cat hg.pid`
29 kill `cat hg.pid`
28 sleep 1
30 sleep 1
29
31
30 echo % With --prefix /foo
32 echo % With --prefix /foo
31 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix /foo | sed -e 's,:[0-9][0-9]*/,/,'
33 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix /foo \
34 | sed -e 's/:[0-9][0-9]*//g' -e 's/localhost\.localdomain/localhost/'
32 cat hg.pid >> "$DAEMON_PIDS"
35 cat hg.pid >> "$DAEMON_PIDS"
33 sleep 1
36 sleep 1
34 kill `cat hg.pid`
37 kill `cat hg.pid`
35 sleep 1
38 sleep 1
36
39
37 echo % With --prefix foo/
40 echo % With --prefix foo/
38 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix foo/ | sed -e 's,:[0-9][0-9]*/,/,'
41 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix foo/ \
42 | sed -e 's/:[0-9][0-9]*//g' -e 's/localhost\.localdomain/localhost/'
39 cat hg.pid >> "$DAEMON_PIDS"
43 cat hg.pid >> "$DAEMON_PIDS"
40 sleep 1
44 sleep 1
41 kill `cat hg.pid`
45 kill `cat hg.pid`
42 sleep 1
46 sleep 1
43
47
44 echo % With --prefix /foo/
48 echo % With --prefix /foo/
45 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix /foo/ | sed -e 's,:[0-9][0-9]*/,/,'
49 hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -v --prefix /foo/ \
50 | sed -e 's/:[0-9][0-9]*//g' -e 's/localhost\.localdomain/localhost/'
46 cat hg.pid >> "$DAEMON_PIDS"
51 cat hg.pid >> "$DAEMON_PIDS"
@@ -1,12 +1,12 b''
1 % Without -v
1 % Without -v
2 access log created - .hg/hgrc respected
2 access log created - .hg/hgrc respected
3 % With -v
3 % With -v
4 listening at http://localhost/
4 listening at http://localhost/ (127.0.0.1)
5 % With --prefix foo
5 % With --prefix foo
6 listening at http://localhost/foo/
6 listening at http://localhost/foo/ (127.0.0.1)
7 % With --prefix /foo
7 % With --prefix /foo
8 listening at http://localhost/foo/
8 listening at http://localhost/foo/ (127.0.0.1)
9 % With --prefix foo/
9 % With --prefix foo/
10 listening at http://localhost/foo/
10 listening at http://localhost/foo/ (127.0.0.1)
11 % With --prefix /foo/
11 % With --prefix /foo/
12 listening at http://localhost/foo/
12 listening at http://localhost/foo/ (127.0.0.1)
General Comments 0
You need to be logged in to leave comments. Login now