--- pymsn-t/src/main.py	2008-04-04 17:45:43.000000000 +0400
+++ pymsn-t/src/main.py	2008-08-05 17:44:17.000000000 +0400
@@ -91,6 +91,7 @@
 from twisted.words.xish.domish import Element
 from twisted.words.protocols.jabber import component
 from twisted.words.protocols.jabber.jid import internJID
+from twisted.python import log

 from debug import LogEvent, INFO, WARN, ERROR

@@ -352,13 +353,29 @@
 		pf = open(config.pid, "w")
 		pf.write("%s\n" % pid)
 		pf.close()
+
+	def removePID(self, pidfile):
+		# Remove a PID file
+		if not pidfile:
+			return
+		try:
+			os.unlink(pidfile)
+		except OSError, e:
+			if e.errno == errno.EACCES or e.errno == errno.EPERM:
+				log.msg("Warning: No permission to delete pid file")
+			else:
+				log.msg("Failed to unlink PID file:")
+				log.deferr()
+		except:
+			log.msg("Failed to unlink PID file:")
+			log.deferr()

 	def shuttingDown(self):
 		self.transportSvc.removeMe()
 		# Keep the transport running for another 3 seconds
 		def cb(ignored=None):
 			if config.pid:
-				twistd.removePID(config.pid)
+				self.removePID(config.pid)
 		d = Deferred()
 		d.addCallback(cb)
 		reactor.callLater(3.0, d.callback, None)