@@ -413,6 +413,7 @@ def shutdown_server(server_info, timeout=5, log=None):
413413 Returns True if the server was stopped by any means, False if stopping it
414414 failed (on Windows).
415415 """
416+ # TODO: this needs to handle socket connections
416417 from tornado .httpclient import HTTPClient , HTTPRequest
417418 url = server_info ['url' ]
418419 pid = server_info ['pid' ]
@@ -454,6 +455,9 @@ class NbserverStopApp(JupyterApp):
454455 port = Integer (DEFAULT_NOTEBOOK_PORT , config = True ,
455456 help = "Port of the server to be killed. Default %s" % DEFAULT_NOTEBOOK_PORT )
456457
458+ sock = Unicode (u'' , config = True ,
459+ help = "UNIX socket of the server to be killed." )
460+
457461 def parse_command_line (self , argv = None ):
458462 super (NbserverStopApp , self ).parse_command_line (argv )
459463 if self .extra_args :
@@ -467,16 +471,16 @@ def start(self):
467471 if not servers :
468472 self .exit ("There are no running servers" )
469473 for server in servers :
470- if server ['port' ] == self .port :
474+ if server . get ( 'sock' ) == self . sock or server ['port' ] == self .port :
471475 print ("Shutting down server on port" , self .port , "..." )
472476 if not self .shutdown_server (server ):
473477 sys .exit ("Could not stop server" )
474478 return
475479 else :
476480 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 )
478482 for server in servers :
479- print (" - {}" .format (server ['port' ]), file = sys .stderr )
483+ print (" - {}" .format (server . get ( 'sock' , server ['port' ]) ), file = sys .stderr )
480484 self .exit (1 )
481485
482486
@@ -556,6 +560,8 @@ def start(self):
556560 'ip' : 'NotebookApp.ip' ,
557561 'port' : 'NotebookApp.port' ,
558562 'port-retries' : 'NotebookApp.port_retries' ,
563+ 'sock' : 'NotebookApp.sock' ,
564+ 'sock-umask' : 'NotebookApp.sock_umask' ,
559565 'transport' : 'KernelManager.transport' ,
560566 'keyfile' : 'NotebookApp.keyfile' ,
561567 'certfile' : 'NotebookApp.certfile' ,
@@ -703,7 +709,7 @@ def _valdate_ip(self, proposal):
703709 help = _ ("The UNIX socket the notebook server will listen on." )
704710 )
705711
706- sock_umask = Unicode (u'' , config = True ,
712+ sock_umask = Unicode (u'0600 ' , config = True ,
707713 help = _ ("The UNIX socket umask to set on creation (default: 0600)." )
708714 )
709715
@@ -1472,7 +1478,7 @@ def _bind_http_server(self):
14721478
14731479 def _bind_http_server_unix (self ):
14741480 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 ))
14761482 self .http_server .add_socket (sock )
14771483 except socket .error as e :
14781484 if e .errno == errno .EADDRINUSE :
@@ -1772,6 +1778,7 @@ def server_info(self):
17721778 return {'url' : self .connection_url ,
17731779 'hostname' : self .ip if self .ip else 'localhost' ,
17741780 'port' : self .port ,
1781+ 'sock' : self .sock ,
17751782 'secure' : bool (self .certfile ),
17761783 'base_url' : self .base_url ,
17771784 'token' : self .token ,
0 commit comments