Ruby-1.8.7-p72 (mswin32) socket protocol missing


#1

artonです。

Ruby-1.8.7-p72 ですが、WSAEnumProtocolsで列挙されないプロトコルがあるた
め、Socket作成に失敗します。1.9.1でも同様だと思います。
具体的には、Vista64(32ビット互換レイヤ上)でAF_INET、PROTO_ICMP、
SOCK_RAWを指定してSocket.newを呼ぶと、上記の組み合わせがWSAEnumProtocols
では返らないため、エラーとなります。
しかし、実際には、WSASocketに対してLPWSAPROTOCOL_INFOパラメータにNULLを
設定すると、期待通りのsocketが作成されます。したがって、WSAEnumProtocols
ã§è¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã§ã‚ã£ã¦ã‚‚ã€LPWSAPROTOCL_INFOにNULLを設定して
WSASocketを呼び出していただけないでしょうか。
パッチを添付します。
テストプログラムとしては、http://svn.arton.no-ip.info/raa/trunk/icmpping/
の、icmpping.rbとpingtest.rbでテストできると思います(Administratorの必
要がありますけど)。

よろしくお願いします。


#2

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:37092] ruby-1.8.7-p72 (mswin32) socket protocol
missing”
on Nov.13,2008 21:10:43, removed_email_address@domain.invalid wrote:

Ruby-1.8.7-p72 e$B$G$9$,!“e(BWSAEnumProtocolse$B$GNs5s$5$l$J$$%W%m%H%3%k$,$”$k$?e(B
e$B$a!"e(BSockete$B:n@.$K<:GT$7$^$9!#e(B1.9.1e$B$G$bF1MM$@$H;W$$$^$9!#e(B

trunke$B!"e(Bruby_1_9_1e$B!"e(Bruby_1_8e$B$G@hF|=$@5$7$?LdBj$N$3$H$N$h$&$J5$e(B
e$B$,$7$^$9!#e(Br20166e$B$G$9!#e(B

e$B$=$l$G$O!#e(B


#3

artone$B$G$9!#e(B

trunke$B!"e(Bruby_1_9_1e$B!"e(Bruby_1_8e$B$G@hF|=$@5$7$?LdBj$N$3$H$N$h$&$J5$e(B
e$B$,$7$^$9!#e(Br20166e$B$G$9!#e(B
e$B3NG’$7$^$7$?!#F1$8$3$H$G$9$M!#!JK\Ev$O$A$g$C$H0c$C$F!“e(B20166e$B$@$He(Bproto_buffer
e$B$r;XDj$G$-$?$N$K%(%i!<$K$J$C$F$$$k$N$@$+$i!”:F;n9T$7$F$b$@$a$J$h$&$J!Ke(B