はてブで言及されてたので。非同期DNSは(特にPOEに於いては)すでに何回か書いているので実はやり方は簡単なんだけど、なんで今までやってなかったかというと、コードがこんがらがるから。ステートダイアグラムにすると一回ループが入る事が分かるとおもう:
1. Send Request
2. Check DNS
2.1 If DNS resolution required, go to 3
2.2 else, go to 4
3. Resolve DNS
3.1 if DNS resolved, go back to 1
3.2 if DNS resolution failed, go to error
4. Send request through socket...
....
で、Gunghoはまず仕組みをキレイに作りたかったのでこの辺りはとりあえずpuntしておいたわけです。でもそろそろ作ってもいいかなぁ。