mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-04 03:27:00 -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()
 | 
					    t.conn.close()
 | 
				
			||||||
    raise SystemExit(0)
 | 
					    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):
 | 
					def main(args=sys.argv):
 | 
				
			||||||
    gui_debug = None
 | 
					    gui_debug = None
 | 
				
			||||||
    if args[0] == '__CALIBRE_GUI_DEBUG__':
 | 
					    if args[0] == '__CALIBRE_GUI_DEBUG__':
 | 
				
			||||||
@ -428,20 +437,19 @@ def main(args=sys.argv):
 | 
				
			|||||||
    except AbortInit:
 | 
					    except AbortInit:
 | 
				
			||||||
        return 1
 | 
					        return 1
 | 
				
			||||||
    from calibre.utils.lock import singleinstance
 | 
					    from calibre.utils.lock import singleinstance
 | 
				
			||||||
    from multiprocessing.connection import Listener
 | 
					 | 
				
			||||||
    si = singleinstance('calibre GUI')
 | 
					    si = singleinstance('calibre GUI')
 | 
				
			||||||
    if si and opts.shutdown_running_calibre:
 | 
					    if si and opts.shutdown_running_calibre:
 | 
				
			||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
    if si:
 | 
					    if si:
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            listener = Listener(address=gui_socket_address())
 | 
					            listener = create_listener()
 | 
				
			||||||
        except socket.error:
 | 
					        except socket.error:
 | 
				
			||||||
            if iswindows or islinux:
 | 
					            if iswindows or islinux:
 | 
				
			||||||
                cant_start()
 | 
					                cant_start()
 | 
				
			||||||
            if os.path.exists(gui_socket_address()):
 | 
					            if os.path.exists(gui_socket_address()):
 | 
				
			||||||
                os.remove(gui_socket_address())
 | 
					                os.remove(gui_socket_address())
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                listener = Listener(address=gui_socket_address())
 | 
					                listener = create_listener()
 | 
				
			||||||
            except socket.error:
 | 
					            except socket.error:
 | 
				
			||||||
                cant_start()
 | 
					                cant_start()
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
@ -452,7 +460,7 @@ def main(args=sys.argv):
 | 
				
			|||||||
                    gui_debug=gui_debug)
 | 
					                    gui_debug=gui_debug)
 | 
				
			||||||
    otherinstance = False
 | 
					    otherinstance = False
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        listener = Listener(address=gui_socket_address())
 | 
					        listener = create_listener()
 | 
				
			||||||
    except socket.error:  # Good si is correct (on UNIX)
 | 
					    except socket.error:  # Good si is correct (on UNIX)
 | 
				
			||||||
        otherinstance = True
 | 
					        otherinstance = True
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
 | 
				
			|||||||
@ -72,7 +72,8 @@ class Listener(Thread):  # {{{
 | 
				
			|||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.listener.close()
 | 
					            self.listener.close()
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            pass
 | 
					            import traceback
 | 
				
			||||||
 | 
					            traceback.print_exc()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# }}}
 | 
					# }}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -307,6 +307,9 @@ class Server(Thread):
 | 
				
			|||||||
    def close(self):
 | 
					    def close(self):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.add_jobs_queue.put(None)
 | 
					            self.add_jobs_queue.put(None)
 | 
				
			||||||
 | 
					        except:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
            self.listener.close()
 | 
					            self.listener.close()
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user