hgext/inotify/server.py
branchstable
changeset 9900 8939900073a8
parent 9897 97eda2133a9b
child 9933 2e7902158af9
child 10263 25e572394f5c
equal deleted inserted replaced
9899:be574a37a8ae 9900:8939900073a8
   689         self.realsockpath = None
   689         self.realsockpath = None
   690         try:
   690         try:
   691             self.sock.bind(self.sockpath)
   691             self.sock.bind(self.sockpath)
   692         except socket.error, err:
   692         except socket.error, err:
   693             if err[0] == errno.EADDRINUSE:
   693             if err[0] == errno.EADDRINUSE:
   694                 raise AlreadyStartedException(_('could not start server: %s')
   694                 raise AlreadyStartedException( _('cannot start: socket is '
   695                                               % err[1])
   695                                                  'already bound'))
   696             if err[0] == "AF_UNIX path too long":
   696             if err[0] == "AF_UNIX path too long":
       
   697                 if os.path.islink(self.sockpath) and \
       
   698                         not os.path.exists(self.sockpath):
       
   699                     raise util.Abort('inotify-server: cannot start: '
       
   700                                     '.hg/inotify.sock is a broken symlink')
   697                 tempdir = tempfile.mkdtemp(prefix="hg-inotify-")
   701                 tempdir = tempfile.mkdtemp(prefix="hg-inotify-")
   698                 self.realsockpath = os.path.join(tempdir, "inotify.sock")
   702                 self.realsockpath = os.path.join(tempdir, "inotify.sock")
   699                 try:
   703                 try:
   700                     self.sock.bind(self.realsockpath)
   704                     self.sock.bind(self.realsockpath)
   701                     os.symlink(self.realsockpath, self.sockpath)
   705                     os.symlink(self.realsockpath, self.sockpath)
   704                         os.unlink(self.realsockpath)
   708                         os.unlink(self.realsockpath)
   705                     except:
   709                     except:
   706                         pass
   710                         pass
   707                     os.rmdir(tempdir)
   711                     os.rmdir(tempdir)
   708                     if inst.errno == errno.EEXIST:
   712                     if inst.errno == errno.EEXIST:
   709                         raise AlreadyStartedException(_('could not start server: %s')
   713                         raise AlreadyStartedException(_('cannot start: tried '
   710                                                       % inst.strerror)
   714                             'linking .hg/inotify.sock to a temporary socket but'
       
   715                             ' .hg/inotify.sock already exists'))
   711                     raise
   716                     raise
   712             else:
   717             else:
   713                 raise
   718                 raise
   714         self.sock.listen(5)
   719         self.sock.listen(5)
   715         self.fileno = self.sock.fileno
   720         self.fileno = self.sock.fileno
   839     class service(object):
   844     class service(object):
   840         def init(self):
   845         def init(self):
   841             try:
   846             try:
   842                 self.master = master(ui, dirstate, root, timeout)
   847                 self.master = master(ui, dirstate, root, timeout)
   843             except AlreadyStartedException, inst:
   848             except AlreadyStartedException, inst:
   844                 raise util.Abort(str(inst))
   849                 raise util.Abort("inotify-server: %s" % inst)
   845 
   850 
   846         def run(self):
   851         def run(self):
   847             try:
   852             try:
   848                 self.master.run()
   853                 self.master.run()
   849             finally:
   854             finally: