On Wed, Nov 03, 2010 at 12:16:34PM +1000, James Mills wrote:
> The problem with this (that we have) is that when/if the dns servers change
> (example: unplug the wire, turn on the wireless) this method of resolving 
> names
> isn't able to tell that the dns servers have changed quickly enough.
> 
> On Windows we've solved this by hooking into win32 calls (windns I believe)
> and using ctypes.
> 
> We're after something similar on the Mac OS X platform ideally...

socket.* *does* use the Mac native resolution mechanism.  What you're
running into is that they cache too aggressively; I've noticed this
myself especially on 10.6.

Executing 'dscacheutil -flushcache' should help; it doesn't require
any privileges.  You can use the SystemConfiguration framework to
watch for DNS changes (State:/Network/Global/DNS).  It's wrapped by
PyObjC.  At least on my 10.5 Mac here there's a demo script in
/Developer/Examples/Python/PyObjC/SystemConfiguration/CallbackDemo/callbacks.py
which registers for dynamic store notifications.  You could also talk
to scutil if you wanted; it's also got the ability to register for
notifications:

% scutil
> n.add State:/Network/Global/DNS
> n.watch
> notification callback (store address = 0x103730).
  changed key [0] = State:/Network/Global/DNS

-- 
Nicholas Riley <njri...@illinois.edu>
_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to