mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	Fix unnecessary error when shutting down GUI IPC socket on linux
This commit is contained in:
		
							parent
							
								
									3469076d03
								
							
						
					
					
						commit
						a1d2bc80f9
					
				@ -417,6 +417,15 @@ def communicate(opts, args):
 | 
			
		||||
    t.conn.close()
 | 
			
		||||
    raise SystemExit(0)
 | 
			
		||||
 | 
			
		||||
def create_listener():
 | 
			
		||||
    from multiprocessing.connection import Listener
 | 
			
		||||
    listener = Listener(address=gui_socket_address())
 | 
			
		||||
    if islinux and hasattr(listener._listener._unlink, 'cancel'):
 | 
			
		||||
        # multiprocessing tries to call unlink even on abstract
 | 
			
		||||
        # named sockets, prevent it from doing so.
 | 
			
		||||
        listener._listener._unlink.cancel()
 | 
			
		||||
    return listener
 | 
			
		||||
 | 
			
		||||
def main(args=sys.argv):
 | 
			
		||||
    gui_debug = None
 | 
			
		||||
    if args[0] == '__CALIBRE_GUI_DEBUG__':
 | 
			
		||||
@ -428,20 +437,19 @@ def main(args=sys.argv):
 | 
			
		||||
    except AbortInit:
 | 
			
		||||
        return 1
 | 
			
		||||
    from calibre.utils.lock import singleinstance
 | 
			
		||||
    from multiprocessing.connection import Listener
 | 
			
		||||
    si = singleinstance('calibre GUI')
 | 
			
		||||
    if si and opts.shutdown_running_calibre:
 | 
			
		||||
        return 0
 | 
			
		||||
    if si:
 | 
			
		||||
        try:
 | 
			
		||||
            listener = Listener(address=gui_socket_address())
 | 
			
		||||
            listener = create_listener()
 | 
			
		||||
        except socket.error:
 | 
			
		||||
            if iswindows or islinux:
 | 
			
		||||
                cant_start()
 | 
			
		||||
            if os.path.exists(gui_socket_address()):
 | 
			
		||||
                os.remove(gui_socket_address())
 | 
			
		||||
            try:
 | 
			
		||||
                listener = Listener(address=gui_socket_address())
 | 
			
		||||
                listener = create_listener()
 | 
			
		||||
            except socket.error:
 | 
			
		||||
                cant_start()
 | 
			
		||||
            else:
 | 
			
		||||
@ -452,7 +460,7 @@ def main(args=sys.argv):
 | 
			
		||||
                    gui_debug=gui_debug)
 | 
			
		||||
    otherinstance = False
 | 
			
		||||
    try:
 | 
			
		||||
        listener = Listener(address=gui_socket_address())
 | 
			
		||||
        listener = create_listener()
 | 
			
		||||
    except socket.error:  # Good si is correct (on UNIX)
 | 
			
		||||
        otherinstance = True
 | 
			
		||||
    else:
 | 
			
		||||
 | 
			
		||||
@ -72,7 +72,8 @@ class Listener(Thread):  # {{{
 | 
			
		||||
        try:
 | 
			
		||||
            self.listener.close()
 | 
			
		||||
        except:
 | 
			
		||||
            pass
 | 
			
		||||
            import traceback
 | 
			
		||||
            traceback.print_exc()
 | 
			
		||||
 | 
			
		||||
# }}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -307,6 +307,9 @@ class Server(Thread):
 | 
			
		||||
    def close(self):
 | 
			
		||||
        try:
 | 
			
		||||
            self.add_jobs_queue.put(None)
 | 
			
		||||
        except:
 | 
			
		||||
            pass
 | 
			
		||||
        try:
 | 
			
		||||
            self.listener.close()
 | 
			
		||||
        except:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user