From a6cff4f0b23068218849e44718e7255b634a9872 Mon Sep 17 00:00:00 2001 From: Kenny Millington Date: Mon, 18 Oct 2010 12:44:02 +0100 Subject: [PATCH] Fix exceptions propagating out of TftpServer.listen() Signed-off-by: Michael P. Soulier --- tftpy/TftpServer.py | 7 ++++++- tftpy/TftpStates.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tftpy/TftpServer.py b/tftpy/TftpServer.py index f943b93..9e64d83 100644 --- a/tftpy/TftpServer.py +++ b/tftpy/TftpServer.py @@ -107,7 +107,12 @@ class TftpServer(TftpSession): timeout, self.root, self.dyn_file_func) - self.sessions[key].start(buffer) + try: + self.sessions[key].start(buffer) + except TftpException, err: + deletion_list.append(key) + log.error("Fatal exception thrown from " + "session %s: %s" % (key, str(err))) else: log.warn("received traffic on main socket for " "existing session??") diff --git a/tftpy/TftpStates.py b/tftpy/TftpStates.py index c521e51..142029c 100644 --- a/tftpy/TftpStates.py +++ b/tftpy/TftpStates.py @@ -115,7 +115,7 @@ class TftpContext(object): called explicitely by the calling code, this works better than the destructor.""" log.debug("in TftpContext.end") - if not self.fileobj.closed: + if self.fileobj is not None and not self.fileobj.closed: log.debug("self.fileobj is open - closing") self.fileobj.close()