@@ -413,6 +413,7 @@ def shutdown_server(server_info, timeout=5, log=None):
413
413
Returns True if the server was stopped by any means, False if stopping it
414
414
failed (on Windows).
415
415
"""
416
+ # TODO: this needs to handle socket connections
416
417
from tornado .httpclient import HTTPClient , HTTPRequest
417
418
url = server_info ['url' ]
418
419
pid = server_info ['pid' ]
@@ -454,6 +455,9 @@ class NbserverStopApp(JupyterApp):
454
455
port = Integer (DEFAULT_NOTEBOOK_PORT , config = True ,
455
456
help = "Port of the server to be killed. Default %s" % DEFAULT_NOTEBOOK_PORT )
456
457
458
+ sock = Unicode (u'' , config = True ,
459
+ help = "UNIX socket of the server to be killed." )
460
+
457
461
def parse_command_line (self , argv = None ):
458
462
super (NbserverStopApp , self ).parse_command_line (argv )
459
463
if self .extra_args :
@@ -467,16 +471,16 @@ def start(self):
467
471
if not servers :
468
472
self .exit ("There are no running servers" )
469
473
for server in servers :
470
- if server ['port' ] == self .port :
474
+ if server . get ( 'sock' ) == self . sock or server ['port' ] == self .port :
471
475
print ("Shutting down server on port" , self .port , "..." )
472
476
if not self .shutdown_server (server ):
473
477
sys .exit ("Could not stop server" )
474
478
return
475
479
else :
476
480
print ("There is currently no server running on port {}" .format (self .port ), file = sys .stderr )
477
- print ("Ports currently in use:" , file = sys .stderr )
481
+ print ("Ports/sockets currently in use:" , file = sys .stderr )
478
482
for server in servers :
479
- print (" - {}" .format (server ['port' ]), file = sys .stderr )
483
+ print (" - {}" .format (server . get ( 'sock' , server ['port' ]) ), file = sys .stderr )
480
484
self .exit (1 )
481
485
482
486
@@ -556,6 +560,8 @@ def start(self):
556
560
'ip' : 'NotebookApp.ip' ,
557
561
'port' : 'NotebookApp.port' ,
558
562
'port-retries' : 'NotebookApp.port_retries' ,
563
+ 'sock' : 'NotebookApp.sock' ,
564
+ 'sock-umask' : 'NotebookApp.sock_umask' ,
559
565
'transport' : 'KernelManager.transport' ,
560
566
'keyfile' : 'NotebookApp.keyfile' ,
561
567
'certfile' : 'NotebookApp.certfile' ,
@@ -703,7 +709,7 @@ def _valdate_ip(self, proposal):
703
709
help = _ ("The UNIX socket the notebook server will listen on." )
704
710
)
705
711
706
- sock_umask = Unicode (u'' , config = True ,
712
+ sock_umask = Unicode (u'0600 ' , config = True ,
707
713
help = _ ("The UNIX socket umask to set on creation (default: 0600)." )
708
714
)
709
715
@@ -1472,7 +1478,7 @@ def _bind_http_server(self):
1472
1478
1473
1479
def _bind_http_server_unix (self ):
1474
1480
try :
1475
- sock = bind_unix_socket (self .sock , mode = int (self .sock_umask , 8 ))
1481
+ sock = bind_unix_socket (self .sock , mode = int (self .sock_umask . encode () , 8 ))
1476
1482
self .http_server .add_socket (sock )
1477
1483
except socket .error as e :
1478
1484
if e .errno == errno .EADDRINUSE :
@@ -1772,6 +1778,7 @@ def server_info(self):
1772
1778
return {'url' : self .connection_url ,
1773
1779
'hostname' : self .ip if self .ip else 'localhost' ,
1774
1780
'port' : self .port ,
1781
+ 'sock' : self .sock ,
1775
1782
'secure' : bool (self .certfile ),
1776
1783
'base_url' : self .base_url ,
1777
1784
'token' : self .token ,
0 commit comments