catch XML parse errors & don't attempt to reconnect. Also removed 'connecting' state from setStream method
This commit is contained in:
parent
dd9f33b7d9
commit
cd2017b8b0
@ -58,8 +58,7 @@ class XMLStream(object):
|
|||||||
global ssl_support
|
global ssl_support
|
||||||
self.ssl_support = ssl_support
|
self.ssl_support = ssl_support
|
||||||
self.escape_quotes = escape_quotes
|
self.escape_quotes = escape_quotes
|
||||||
self.state = statemachine.StateMachine(('disconnected','connecting',
|
self.state = statemachine.StateMachine(('disconnected','connected'))
|
||||||
'connected'))
|
|
||||||
self.should_reconnect = True
|
self.should_reconnect = True
|
||||||
|
|
||||||
self.setSocket(socket)
|
self.setSocket(socket)
|
||||||
@ -92,9 +91,11 @@ class XMLStream(object):
|
|||||||
def setSocket(self, socket):
|
def setSocket(self, socket):
|
||||||
"Set the socket"
|
"Set the socket"
|
||||||
self.socket = socket
|
self.socket = socket
|
||||||
if socket is not None and self.state.transition('disconnected','connecting'):
|
if socket is not None:
|
||||||
self.filesocket = socket.makefile('rb', 0) # ElementTree.iterparse requires a file. 0 buffer files have to be binary
|
with self.state.transition_ctx('disconnected','connected') as locked:
|
||||||
self.state.transition('connecting','connected')
|
if not locked: raise Exception('Already connected')
|
||||||
|
# ElementTree.iterparse requires a file. 0 buffer files have to be binary
|
||||||
|
self.filesocket = socket.makefile('rb', 0)
|
||||||
|
|
||||||
def setFileSocket(self, filesocket):
|
def setFileSocket(self, filesocket):
|
||||||
self.filesocket = filesocket
|
self.filesocket = filesocket
|
||||||
@ -235,6 +236,9 @@ class XMLStream(object):
|
|||||||
logging.debug("System interrupt detected")
|
logging.debug("System interrupt detected")
|
||||||
self.shutdown()
|
self.shutdown()
|
||||||
self.eventqueue.put(('quit', None, None))
|
self.eventqueue.put(('quit', None, None))
|
||||||
|
except cElementTree.XMLParserError:
|
||||||
|
logging.warn('XML RCV parsing error!', exc_info=1)
|
||||||
|
# don't restart the stream on an XML parse error.
|
||||||
except:
|
except:
|
||||||
logging.exception('Unexpected error in RCV thread')
|
logging.exception('Unexpected error in RCV thread')
|
||||||
if self.should_reconnect:
|
if self.should_reconnect:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user