dive into ext/socket

ぜんぜんdiveじゃない

けれど、とりあえず私的プロジェクトの第一フェーズ、AIXで普通にcompileできるようにする。がmission complete。 しろうと故のコツ 他のプラットフォームに迷惑をかけないコードにする できるだけ他のオープンソースで使われているようなコードを探して説得…

setsockopt

net/httpsでHTTPSな通信をしていたのですが、IEのようにリンクをClickしたとたんにCtrl-wで落としたらRSTを出すような状況を作り出したいことになりました。CGIにスリープとかさせて、そのあいだにread_timeout=1とかやってセッションTimeout起こさせたので…

では、--enable-wide-getaddrinfoを使ってみよう。

結論:AIXではやめたほうがよさげ。AI_ADDRCONFIGとかAI_ALLとか書き換えているので、getipnodebynameがしくじってしまう。理由探すのにえらい時間かかってしまった。extconf.rbではhave_funcがgetaddrinfoにもgetnameinfoにも成功してしまうので--enable-wi…

ipv6の設定をしていないのに、

getaddrinfoでpassiveでおねがいを立てると、::が返ってくる。そのくせ、それでbindすると怒りやがる。あほかといいたい。まぁでもgetnameinfoがRFCに準拠してる(かも知れない)のは百歩譲って許すとしよう。でも多分オレ以外にこれで悩んでいるやつがいるは…

みつけた

RFC3493(Basic Socket Interface Extensions for IPv6)の6.2 Socket Address Structure to Node Name and Service Nameにこんな記述を見つけました。 Note: The IPv6 unspecified address ("::") and the IPv6 loopback address ("::1") are not IPv4-compat…

AI_ADDRCONFIG(1)

してもしなくても動きが変わらないなぁ。IPv6の設定はしていないんだけど、ifconfig -aするとループバックに inet6 ::1/0 というのがいる。。。のが影響だろうか。答えは一生分からない気が。

AI_ADDRCONFIG(0)

AIXのsocketプログラミングに関する資料を探しているのですがIPv6と絡んでいる話がほとんど見つかりません。しかたないのでgetaddrinfoのマニュアルをみていたら、知らないオプションがありました。こいつの動きをちょっと調べることにしよう。なんかこのカ…

:: と 0.0.0.0

IPv6のsocketからbindするとIPv4のsocketもbindできるんですが、IPv4を先にバインドしちゃうとIPv6でバインドするときに、 bind: Address already in use になってしまう。AIXではそういうもんなんだろうか。なんかsetsockoptすればいいんだろうか。と思って…

extconf.rb(4)

getnameinfoの動きが他のOSとちがう。getaddrinfoでアドレスをNULL、サービスを54321、passiveで呼び出したときに返ってくるAF_INET6のデータでgetaddrinfoすると Hostname and service name not provided or found になってしまう。今日はここまで。

extconf.rb(3)

aixのipv6のtypeはとりあえずunknown。何か特別なことをしているならここで場合わけが必要かもしれない。ていうか多分必要はない。Linuxでもunknownになった。(1.8:53行目付近)

Logging::postpone in mkmf.rb

こういう言い方でいいのだろうか。。。 Logging::postponeを呼んだ関数(ここで見ていたのはchecking_for)に渡されたブロックやそのあとLoggingを使ってログされたもの(チェックに使ったソースとか)は、Logging::postponeに渡されたブロックのあとにログされ…

どんどん横道へ。

mkmr.rbにあったコード f = caller[0][/in `(.*)'$/, 1]callerはcallerを呼んだ関数を呼び出した関数の情報を配列でかえす。こんな感じ。 $ cat -n caller.rb 1 def current_method 2 p caller 3 end 4 5 def some_method 6 current_method 7 end 8 9 some_m…

extconf.rb(2)

cygwinでなければ、--enable-ipv6がデフォルトになる。…しかし、先は長そうだ。mkmfも勉強しないと。

はじめに。

--disable-ipv6を指定しなくてもいいようにしたい。調査の結果避けようがないなんてことになるのかもしれない。そんなことないか。じぶんなりの結論出るまで続けられるだろうか。気長に頑張ろう。すごい人が出てきて、ちゃっちゃと片付けてしまうかもしれな…

extconf.rb(1)

アタマのほうのtest_func変数はそれがないと、create_makefileが呼ばれないというしるし(?)の関数を入れてある。-lnslが必要かどうかのチェック(have_library)にt_openが指定してあるけど、実際には使われていない。ちなみに、AIXではt_openはlibxti.aにある…