From 2525fef3a8d5c7cc3ff0e05aa7869a3ee3a158ec Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sat, 4 Feb 2006 00:13:12 +0000 Subject: [PATCH] added comments, reverted to popen and print some error messages about invalid arguments --- src/common/nslookup.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/common/nslookup.py b/src/common/nslookup.py index 94a3d66b1..2234c5693 100644 --- a/src/common/nslookup.py +++ b/src/common/nslookup.py @@ -92,6 +92,9 @@ class Resolver: except ValueError: continue elif prop_type.find('host') > -1: + # strip '.' at the end of hostname + if prop_value[-1] == '.': + prop_value = prop_value[:-1] current_host['host'] = prop_value if len(current_host) == 4: hosts.append(current_host) @@ -99,7 +102,8 @@ class Resolver: return hosts def _parse_srv_result_posix(self, fqdn, result): - # typical output of bind-tools nslookup command + # typical output of bind-tools nslookup command: + # _xmpp-client._tcp.jabber.org service = 30 30 5222 jabber.org. if not result: return [] hosts = [] @@ -167,6 +171,7 @@ class Resolver: self.handlers[host] = [on_ready] self.start_resolve(host) +# TODO: move IdleCommand class in other file, maybe helpers ? class IdleCommand(IdleObject): def __init__(self, on_result): # how long (sec.) to wait for result ( 0 - forever ) @@ -229,10 +234,9 @@ class IdleCommand(IdleObject): self.idlequeue.set_alarm(self.wait_child, 0.1) def _start_posix(self): - write_d, self.pipe = os.popen4(self._compose_command_line()) - write_d.close() + self.pipe = os.popen(self._compose_command_line()) self.fd = self.pipe.fileno() - #~ fcntl.fcntl(self.pipe, fcntl.F_SETFL, os.O_NONBLOCK) + fcntl.fcntl(self.pipe, fcntl.F_SETFL, os.O_NONBLOCK) self.idlequeue.plug_idle(self, False, True) if self.commandtimeout >= 0: self.idlequeue.set_read_timeout(self.fd, self.commandtimeout) @@ -271,11 +275,12 @@ class NsLookup(IdleCommand): self.type = type.lower() if not host_pattern.match(self.host): # invalid host name - # TODO: notify user about this. Maybe message to stderr will be enough + print >> sys.stderr, 'Invalid host: %s' % self.host self.host = None self.canexecute = False return if not ns_type_pattern.match(self.type): + print >> sys.stderr, 'Invalid querytype: %s' % self.type self.type = None self.host = None self.canexecute = False @@ -289,6 +294,7 @@ class NsLookup(IdleCommand): self.result_handler(self.host, self.result) self.result_handler = None +# TODO: remove below lines if there is nothing more to test if __name__ == '__main__': if os.name != 'posix': sys.exit()