Multiple functions in iOS seem to hang or fail in various ways when used on an IPv6-only network. The experiments have shown that assigning an IPv4 address manually "fixes" that - but this is obviously not scalable.
I tried to make a patch to dnsmasq to filter the A replies. Looks like running this fixes the problem. If you have a MacOS X laptop and an iOS device - grab this code, and run your own instance of dnsmasq to test if all the "hanging" functions are ok with this setup.