diff --git a/wsdiscovery/message.py b/wsdiscovery/message.py index 28de003..03db359 100644 --- a/wsdiscovery/message.py +++ b/wsdiscovery/message.py @@ -5,6 +5,9 @@ from .actions import * from xml.dom import minidom +import logging + +logger = logging.getLogger(__name__) def createSOAPMessage(env): "serialize SOAP envelopes into XML strings" @@ -27,15 +30,20 @@ def parseSOAPMessage(data, ipAddr): "deserialize XML message strings into SOAP envelope objects" try: dom = minidom.parseString(data) - except Exception: - #print('Failed to parse message from %s\n"%s": %s' % (ipAddr, data, ex), file=sys.stderr) + except Exception as ex: + logger.debug('Failed to parse message from %s\n%s: %s', ipAddr, data, ex) return None if dom.getElementsByTagNameNS(NS_SOAPENV, "Fault"): - #print('Fault received from %s %s:' % (ipAddr, data), file=sys.stderr) + logger.debug('Fault received from %s: %s', ipAddr, data) + return None + + actions = dom.getElementsByTagNameNS(NS_ADDRESSING, "Action") + if len(actions) == 0: + logger.warning('No action received from %s: %s', ipAddr, data) return None - soapAction = dom.getElementsByTagNameNS(NS_ADDRESSING, "Action")[0].firstChild.data.strip() + soapAction = actions[0].firstChild.data.strip() if soapAction == NS_ACTION_PROBE: return parseProbeMessage(dom) elif soapAction == NS_ACTION_PROBE_MATCH: