diff --git a/NEWS b/NEWS index 9d5ebae..8a0f8b1 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,7 @@ 1.6.6: ? + * Luminotes Desktop now attempts to always run on a particular port number, + which means that as long as it's running you can reach it from a constant + URL. * Luminotes now recognizes "mailto:" links as external links, so you can include links to email addresses within your notes. diff --git a/config/Desktop.py b/config/Desktop.py index 3e4d482..2cb26fe 100644 --- a/config/Desktop.py +++ b/config/Desktop.py @@ -9,11 +9,21 @@ username_postfix = os.environ.get( "USER" ) username_postfix = username_postfix and "_%s" % username_postfix or "" -# find an available TCP socket to listen on -sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) -sock.bind( ( "", 0 ) ) -socket_port = sock.getsockname()[ 1 ] -sock.close() +def find_available_port( port_number = 0 ): + sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) + sock.bind( ( "", port_number ) ) + socket_port = sock.getsockname()[ 1 ] + sock.close() + return socket_port + + +# find an available TCP socket to listen on. try the default port first, and if that's not +# available, then just grab any available port that the OS gives us +DEFAULT_PORT = 6520 +try: + socket_port = find_available_port( DEFAULT_PORT ) +except socket.error: + socket_port = find_available_port()