When ignore_unexpected is set to True, query.py loops endlessly after  
receiving a response:

 >>> r = dns.query.udp(q, '224.0.0.251', port=5353, timeout=5,  
ignore_unexpected=False)
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "dns/query.py", line 123, in udp
     raise UnexpectedSource, \
dns.query.UnexpectedSource: got a response from ('192.168.1.62',  
5353) instead of ('224.0.0.251', 5353)

So you can see we got a response, but.....

 >>> r = dns.query.udp(q, '224.0.0.251', port=5353, timeout=5,  
ignore_unexpected=True)
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "dns/query.py", line 118, in udp
     _wait_for_readable(s, expiration)
   File "dns/query.py", line 63, in _wait_for_readable
     _wait_for([s], [], [s], expiration)
   File "dns/query.py", line 60, in _wait_for
     raise dns.exception.Timeout
dns.exception.Timeout

Whoops!

The patch is simple:
120c120
<             if from_address == destination:
---
 >             if (ignore_unexpected or (from_address == destination)):

Cheers

Matt
_______________________________________________
dnspython-bugs mailing list
[email protected]
http://woof.play-bow.org/mailman/listinfo/dnspython-bugs

Reply via email to