«前の日記(2004-01-15) 最新 次の日記(2004-01-17)» 編集

Matzにっき

迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2004-01-16 [長年日記]

_ [Ruby]getaddrinfo(3)

FreeBSD上で

ruby -r socket -e 'p Socket.gethostbyname("210.251.121.214")'

が落ちる。理由はこの処理の内部でホスト情報を得るのに、 getaddrinfo(3)をserviceをNULLにして呼んでいるのだが、 FreeBSDでは、この呼び出しがエラーなく終了した後、結果のstruct addrinfoのai_canonnameがNULLだからだ。 flagsにはAI_CANONNAMEを指定している。

たぶん、呼び出し方が悪いのだと思うのだが、man getaddrinfoには

node パラメータと service パラメータのどちらかは NULL にしてよい (両方同時には不可)。

とあるので、許されると思うんだけどなあ。 昨日会った、ゆうぞうさんは「それは駄目だろう」っていうんだけど、 私にはいまいち理解できてない。

mallocにバグなし

という有名なことわざがあるので、間違っているのは自分である可能性はかなり高いのだが、 どう対応したらよいのかは不明だ。

本日のツッコミ(全1件) [ツッコミを入れる]
_ τ森@なゆきすと (2004-01-20 05:14)

4.7-RELEASE のソースを見る限りだと、数値的なホスト名を getaddrinfo に渡した場合には ai_canonname はセットされないのが仕様であるように見えるのですが…気の所為?

お名前:
E-mail:
コメント:
[]

«前の日記(2004-01-15) 最新 次の日記(2004-01-17)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.