Verbetering telnet header afhandeling

- Versturen response code
 - Extra debug logging
This commit is contained in:
2020-08-26 09:14:11 +02:00
parent 42e1ec37ed
commit a2853d2bd7

View File

@@ -60,7 +60,8 @@ Opens the connection and logs in.
self._socket = None
if (log != None):
self.log = log
self.log.debug("LmwSip.init")
self.log.debug("LmwSip.init(%s, **********, %s, %s, %s, %s, %s, %s, %s, %s)" %
(user, host, port, meetnet, ssl, check_ssl, timeout, cleartelnet, reconnecttime))
else:
try:
self.log = logging.getLogger("lmwsip")
@@ -174,12 +175,22 @@ send a sip command to the server
self.log.debug("LmwSip.send(%s)" % logcmd)
self._socket.sendall(sipcmd.encode('ascii'))
except Exception as e:
self.log.error("LmwSip.send(%s) failed: %s", sipcmd, e)
self.log.error("LmwSip.send(%s) failed: %s" % (sipcmd, e))
self.closesocket()
raise LmwSipConnectError("LmwSip.send: Socket connection lost")
else:
self.log.warn("LmwSip.send: No connection")
def telnetheader(self, header):
a = b'\xff\xfd\x01\xff\xfd\x03\xff\xfd\x00\xff\xfc\x01\xff\xfb\x00'
self.log.debug("LmwSip.telnetheader(%s) --> %s" % (header, a))
try:
self._socket.sendall(a)
except Exception as e:
self.log.error("LmwSip.telnetheader(%s) --> %s failed: %s" % (header, a, e))
self.closesocket()
raise LmwSipConnectError("LmwSip.telnetheader: Socket connection lost")
def recv(self):
"""recv()
@@ -187,30 +198,29 @@ recieve a answer from the sip server
"""
bytebuf=b''
stringbuf=""
while self._socket != None and re.search("\r$", bytebuf.decode('utf-8')) == None:
while (self._socket != None) and (stringbuf.find("\r") == -1):
try:
self.log.debug("LmwSip.recv: Waiting for data");
self.log.debug("LmwSip.recv: %s: Waiting for data" % self.cleartelnet);
bytebuf = self._socket.recv(4096)
self.log.debug("recv: bytebuf: %s" % bytebuf)
if self.cleartelnet:
while bytebuf[0] == '\xff':
self.log.info("SipLmw.recv: telnet data: %s", bytebuf)
bytebuf = self._socket.recv(4096)
if bytebuf[0] == 255:
bytebuf = b''
except Exception as e:
self.log.error("SipLmw.recv: socket timeout: %s", e)
self.closesocket()
raise LmwSipConnectError("LmwSip.recv: No data recieved")
if len(bytebuf) == 0:
self.log.error("SipLmw.recv: no data recieved")
self.closesocket()
raise LmwSipConnectError("LmwSip.recv: Socket timeout")
try:
stringbuf += bytebuf.decode('utf-8')
self.log.debug("recv: stringbuf: %s" % stringbuf)
except Exception as e:
self.log.error("SipLmw.recv: decode error: %s", e)
self.closesocket()
raise LmwSipDecodeError("LmwSip.recv: decode error", bytebuf)
if self._socket == None:
self.log.warn("LmwSip.recv: No connection")
elif len(stringbuf) == 0:
self.log.warn("LmwSip.recv: No data")
elif stringbuf[0] != '!':
self.log.warn("LmwSip.recv: Sip error: %s" % stringbuf.strip('\r'))
else: