From: arton Date: 2008-11-13T21:10:43+09:00 Subject: [ruby-dev:37092] ruby-1.8.7-p72 (mswin32) socket protocol missing --------_491C1796000000002DB4_MULTIPART_MIXED_ Content-Type: text/plain; charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit 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の必 要がありますけど)。 よろしくお願いします。 -- arton --------_491C1796000000002DB4_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="win32.diff" Content-Disposition: attachment; filename="win32.diff" Content-Transfer-Encoding: base64 KioqIHdpbjMyLmN+CUZyaSBKdW4gMDYgMTk6Mzk6NTcgMjAwOA0KLS0tIHdpbjMyLmMJVGh1IE5v diAxMyAyMTowMzowNCAyMDA4DQoqKioqKioqKioqKioqKiogb3Blbl9pZnNfc29ja2V0KGludCBh ZiwgaW50IHR5cGUsIGludCBwcg0KKioqIDI2MzMsMjYzOCAqKioqDQotLS0gMjYzMywyNjM5IC0t LS0NCiAgCQlXU0FFbnVtUHJvdG9jb2xzKE5VTEwsIHByb3RvX2J1ZmZlcnMsICZwcm90b19idWZm ZXJzX2xlbik7DQogIAkgICAgaWYgKHByb3RvY29sc19hdmFpbGFibGUgIT0gU09DS0VUX0VSUk9S KSB7DQogIAkJaW50IGk7DQorICAgICAgICAgICAgICAgICBXU0FQUk9UT0NPTF9JTkZPICpwaW5m byA9IE5VTEw7DQogIAkJZm9yIChpID0gMDsgaSA8IHByb3RvY29sc19hdmFpbGFibGU7IGkrKykg ew0KICAJCSAgICBpZiAoKGFmICE9IEFGX1VOU1BFQyAmJiBhZiAhPSBwcm90b19idWZmZXJzW2ld LmlBZGRyZXNzRmFtaWx5KSB8fA0KICAJCQkodHlwZSAhPSBwcm90b19idWZmZXJzW2ldLmlTb2Nr ZXRUeXBlKSB8fA0KKioqKioqKioqKioqKioqIG9wZW5faWZzX3NvY2tldChpbnQgYWYsIGludCB0 eXBlLCBpbnQgcHINCioqKiAyNjQyLDI2NTAgKioqKg0KICAJCSAgICBpZiAoKHByb3RvX2J1ZmZl cnNbaV0uZHdTZXJ2aWNlRmxhZ3MxICYgWFAxX0lGU19IQU5ETEVTKSA9PSAwKQ0KICAJCQljb250 aW51ZTsNCiAgDQohIAkJICAgIG91dCA9IFdTQVNvY2tldChhZiwgdHlwZSwgcHJvdG9jb2wsICYo cHJvdG9fYnVmZmVyc1tpXSksIDAsIDApOw0KICAJCSAgICBicmVhazsNCiAgCQl9DQogIAkgICAg fQ0KICANCiAgCSAgICBmcmVlKHByb3RvX2J1ZmZlcnMpOw0KLS0tIDI2NDMsMjY1MiAtLS0tDQog IAkJICAgIGlmICgocHJvdG9fYnVmZmVyc1tpXS5kd1NlcnZpY2VGbGFnczEgJiBYUDFfSUZTX0hB TkRMRVMpID09IDApDQogIAkJCWNvbnRpbnVlOw0KICANCiEgCQkgICAgcGluZm8gPSAmKHByb3Rv X2J1ZmZlcnNbaV0pOw0KICAJCSAgICBicmVhazsNCiAgCQl9DQorICAgICAgICAgICAgICAgICBv dXQgPSBXU0FTb2NrZXQoYWYsIHR5cGUsIHByb3RvY29sLCBwaW5mbywgMCwgMCk7DQogIAkgICAg fQ0KICANCiAgCSAgICBmcmVlKHByb3RvX2J1ZmZlcnMpOw0K --------_491C1796000000002DB4_MULTIPART_MIXED_-- -------------------------------------- Power up the Internet with Yahoo! Toolbar. http://pr.mail.yahoo.co.jp/toolbar/