From: Akio Tajima Date: 2010-10-10T01:37:21+09:00 Subject: [ruby-dev:42355] [Ruby 1.9-Bug#3923][Open] bad error messages for Winsock (on Win32) --mimepart_4cb098e33e7b6_eedd20a0c81937 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #3923: bad error messages for Winsock (on Win32) http://redmine.ruby-lang.org/issues/show/3923 起票者: Akio Tajima ステータス: Open, 優先度: Normal カテゴリ: core, Target version: 1.9.2 ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-mswin32_100] Winsock関係のErrnoのメッセージが異常です。 例)Errno::EWOULDBLOCK -> 既にパスが置き換えられているドライブ上のディレクトリにドライブを接続しようとしました。 この場合、正しくは「ブロック不可のソケット操作をすぐに完了できませんでした。」です。 理由)WinSock固有のエラーコードをerrnoに変換したまま、strerrorを呼び出しているため。 パッチとテストを添付します。 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cb098e33e7b6_eedd20a0c81937 Content-Type: application/octet-stream; name=errno_message.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=errno_message.patch KioqIHdpbjMyLmN+CVN1biBPY3QgMDMgMTk6MDc6MDEgMjAxMA0KLS0tIHdp bjMyLmMJU3VuIE9jdCAxMCAwMTowMjoxNyAyMDEwDQoqKioqKioqKioqKioq Kiogc3RhdGljIHN0cnVjdCB7DQoqKiogMjEyLDIxNyAqKioqDQotLS0gMjEy LDIyOSAtLS0tDQogIGludA0KICByYl93MzJfbWFwX2Vycm5vKERXT1JEIHdp bmVycikNCiAgew0KKyAgICAgcmV0dXJuIHJiX3czMl9leGNoYW5nZV9lcnJu byh3aW5lcnIsIDApOw0KKyB9DQorIA0KKyBpbnQNCisgcmJfdzMyX3VubWFw X2Vycm5vKERXT1JEIGVycikNCisgew0KKyAgICAgcmV0dXJuIHJiX3czMl9l eGNoYW5nZV9lcnJubyhlcnIsIDEpOw0KKyB9DQorIA0KKyBzdGF0aWMgaW50 DQorIHJiX3czMl9leGNoYW5nZV9lcnJubyhEV09SRCB3aW5lcnIsIGludCBk aXJlY3Rpb24pDQorIHsNCiAgICAgIGludCBpOw0KICANCiAgICAgIGlmICh3 aW5lcnIgPT0gMCkgew0KKioqKioqKioqKioqKioqIHJiX3czMl9tYXBfZXJy bm8oRFdPUkQgd2luZXJyKQ0KKioqIDIxOSwyMjYgKioqKg0KICAgICAgfQ0K ICANCiAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KShzaXplb2YoZXJybWFw KSAvIHNpemVvZigqZXJybWFwKSk7IGkrKykgew0KISAJaWYgKGVycm1hcFtp XS53aW5lcnIgPT0gd2luZXJyKSB7DQohIAkgICAgcmV0dXJuIGVycm1hcFtp XS5lcnI7DQogIAl9DQogICAgICB9DQogIA0KLS0tIDIzMSwyNDQgLS0tLQ0K ICAgICAgfQ0KICANCiAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KShzaXpl b2YoZXJybWFwKSAvIHNpemVvZigqZXJybWFwKSk7IGkrKykgew0KISAgICAg ICAgIGlmIChkaXJlY3Rpb24pIHsNCiEgICAgICAgICAgICAgaWYgKGVycm1h cFtpXS5lcnIgPT0gd2luZXJyKSB7DQohICAgICAgICAgICAgICAgICByZXR1 cm4gZXJybWFwW2ldLndpbmVycjsNCiEgICAgICAgICAgICAgfQ0KISAgICAg ICAgIH0gZWxzZSB7DQohICAgICAgICAgICAgIGlmIChlcnJtYXBbaV0ud2lu ZXJyID09IHdpbmVycikgew0KISAgICAgICAgICAgICAgICAgcmV0dXJuIGVy cm1hcFtpXS5lcnI7DQohICAgICAgICAgICAgIH0NCiAgCX0NCiAgICAgIH0N CiAgDQoqKioqKioqKioqKioqKiogcmJfdzMyX21hcF9lcnJubyhEV09SRCB3 aW5lcnIpDQoqKiogMjMxLDIzNiAqKioqDQotLS0gMjQ5LDI1NSAtLS0tDQog IH0NCiAgDQogICNkZWZpbmUgbWFwX2Vycm5vIHJiX3czMl9tYXBfZXJybm8N CisgI2RlZmluZSB1bm1hcF9lcnJubyByYl93MzJfdW5tYXBfZXJybm8NCiAg DQogIHN0YXRpYyBjb25zdCBjaGFyICpOVExvZ2luTmFtZTsNCiAgDQoqKioq KioqKioqKioqKiogcmJfdzMyX3N0cmVycm9yKGludCBlKQ0KKioqIDIxOTgs MjIxMSAqKioqDQogICAgICBpZiAoZSA8IDAgfHwgZSA+IHN5c19uZXJyKSB7 DQogIAlpZiAoZSA8IDApDQogIAkgICAgZSA9IEdldExhc3RFcnJvcigpOw0K ICAJaWYgKEZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNU RU0gfA0KICAJCQkgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLCAm c291cmNlLCBlLCAwLA0KICAJCQkgIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks IE5VTEwpID09IDApDQogIAkgICAgc3RybGNweShidWZmZXIsICJVbmtub3du IEVycm9yIiwgc2l6ZW9mKGJ1ZmZlcikpOw0KICAgICAgfQ0KISAgICAgZWxz ZQ0KICAJc3RybGNweShidWZmZXIsIHN0cmVycm9yKGUpLCBzaXplb2YoYnVm ZmVyKSk7DQohIA0KICAgICAgcCA9IGJ1ZmZlcjsNCiAgICAgIHdoaWxlICgo cCA9IHN0cnBicmsocCwgIlxyXG4iKSkgIT0gTlVMTCkgew0KICAJbWVtbW92 ZShwLCBwICsgMSwgc3RybGVuKHApKTsNCi0tLSAyMjE3LDIyMzMgLS0tLQ0K ICAgICAgaWYgKGUgPCAwIHx8IGUgPiBzeXNfbmVycikgew0KICAJaWYgKGUg PCAwKQ0KICAJICAgIGUgPSBHZXRMYXN0RXJyb3IoKTsNCisgICAgICAgICBl bHNlDQorICAgICAgICAgICAgIGUgPSB1bm1hcF9lcnJubyhlKTsNCiAgCWlm IChGb3JtYXRNZXNzYWdlKEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwN CiAgCQkJICBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUywgJnNvdXJj ZSwgZSwgMCwNCiAgCQkJICBidWZmZXIsIHNpemVvZihidWZmZXIpLCBOVUxM KSA9PSAwKQ0KICAJICAgIHN0cmxjcHkoYnVmZmVyLCAiVW5rbm93biBFcnJv ciIsIHNpemVvZihidWZmZXIpKTsNCiAgICAgIH0NCiEgICAgIGVsc2Ugew0K ICAJc3RybGNweShidWZmZXIsIHN0cmVycm9yKGUpLCBzaXplb2YoYnVmZmVy KSk7DQohICAgICB9DQohICAgICANCiAgICAgIHAgPSBidWZmZXI7DQogICAg ICB3aGlsZSAoKHAgPSBzdHJwYnJrKHAsICJcclxuIikpICE9IE5VTEwpIHsN CiAgCW1lbW1vdmUocCwgcCArIDEsIHN0cmxlbihwKSk7DQo= --mimepart_4cb098e33e7b6_eedd20a0c81937 Content-Type: application/octet-stream; name=test_errno_message.rb Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=test_errno_message.rb IyBjb2Rpbmc6IGNwOTMyDQpyZXF1aXJlICd0ZXN0L3VuaXQnDQoNCmlmIFJV QllfUExBVEZPUk0gPX4gL21zd2luLyAmJiBFbmNvZGluZy5sb2NhbGVfY2hh cm1hcCA9PSAnQ1A5MzInDQogIGNsYXNzIFRlc3RFcnJub01lc3NhZ2UgPCBU ZXN0OjpVbml0OjpUZXN0Q2FzZQ0KICAgIEUgPSBbDQogICAgICAgICBFcnJu bzo6RVdPVUxEQkxPQ0ssDQogICAgICAgICBFcnJubzo6RUlOUFJPR1JFU1Ms DQogICAgICAgICBFcnJubzo6RUFMUkVBRFksDQogICAgICAgICBFcnJubzo6 RU5PVFNPQ0ssDQogICAgICAgICBFcnJubzo6RURFU1RBRERSUkVRLA0KICAg ICAgICAgRXJybm86OkVNU0dTSVpFLA0KICAgICAgICAgRXJybm86OkVQUk9U T1RZUEUsDQogICAgICAgICBFcnJubzo6RU5PUFJPVE9PUFQsDQogICAgICAg ICBFcnJubzo6RVBST1RPTk9TVVBQT1JULA0KICAgICAgICAgRXJybm86OkVT T0NLVE5PU1VQUE9SVCwNCiAgICAgICAgIEVycm5vOjpFT1BOT1RTVVBQLA0K ICAgICAgICAgRXJybm86OkVQRk5PU1VQUE9SVCwNCiAgICAgICAgIEVycm5v OjpFQUZOT1NVUFBPUlQsDQogICAgICAgICBFcnJubzo6RUFERFJJTlVTRSwN CiAgICAgICAgIEVycm5vOjpFQUREUk5PVEFWQUlMLA0KICAgICAgICAgRXJy bm86OkVORVRET1dOLA0KICAgICAgICAgRXJybm86OkVORVRVTlJFQUNILA0K ICAgICAgICAgRXJybm86OkVORVRSRVNFVCwNCiAgICAgICAgIEVycm5vOjpF Q09OTkFCT1JURUQsDQogICAgICAgICBFcnJubzo6RUNPTk5SRVNFVCwNCiAg ICAgICAgIEVycm5vOjpFTk9CVUZTLA0KICAgICAgICAgRXJybm86OkVJU0NP Tk4sDQogICAgICAgICBFcnJubzo6RU5PVENPTk4sDQogICAgICAgICBFcnJu bzo6RVNIVVRET1dOLA0KICAgICAgICAgRXJybm86OkVUT09NQU5ZUkVGUywN CiAgICAgICAgIEVycm5vOjpFVElNRURPVVQsDQogICAgICAgICBFcnJubzo6 RUNPTk5SRUZVU0VELA0KICAgICAgICAgRXJybm86OkVMT09QLA0KICAgICAg ICAgRXJybm86OkVOQU1FVE9PTE9ORywNCiAgICAgICAgIEVycm5vOjpFSE9T VERPV04sDQogICAgICAgICBFcnJubzo6RUhPU1RVTlJFQUNILA0KICAgICAg ICAgRXJybm86OkVQUk9DTElNLA0KICAgICAgICAgRXJybm86OkVVU0VSUywN CiAgICAgICAgIEVycm5vOjpFRFFVT1QsDQogICAgICAgICBFcnJubzo6RVNU QUxFLA0KICAgICAgICAgRXJybm86OkVSRU1PVEUsDQogICAgICAgIF0gIA0K ICAgIE0gPSBbDQogICAgICAgICAng3WDjYNig06Vc4nCgsyDXINQg2KDZ5GA jeyC8IK3gq6CyYqul7mCxYKrgtyCuYLxgsWCtYK9gUInLA0KICAgICAgICAg J4N1g42DYoNOkYCN7ILwjsCNc5KGgsWCt4FCJywNCiAgICAgICAgICeK+YLJ kYCN7IKqkGmNc5KGgsyDdYONg2KDTpVzicKCzINcg1CDYoNngsmRzoK1gsSB QZGAjeyC8I7AjXOCtYLmgqSCxoK1gtyCtYK9gUInLA0KICAgICAgICAgJ4Nc g1CDYoNniMiKT4LMguCCzILJkc6CtYLEkYCN7ILwjsCNc4K1guaCpILGgrWC 3IK1gr2BQicsDQogICAgICAgICAng1yDUINig2eCzJGAjeyCqYLnlUuXdoLI g0GDaIOMg1iC8I/Il6qCtYLcgrWCvYFCJywNCiAgICAgICAgICeDZoFbg16D T4OJg4Agg1yDUINig2eCxZGXkE2Cs4Lqgr2DgYNig1qBW4NXgqqBQZPglZSC zIOBg2KDWoFbg1eCzINvg2KDdINAgVuC3IK9gs2C2YKpgsyDbINig2eDj4Fb g06CzJCnjMCC8JK0gqaCxIKigtyCt4FCgtyCvYLNgUGDZoFbg16DT4OJg4CC zI7zkE2CyY5ngu2C6oLpg2+DYoN0g0CBW4Kqg2aBW4Neg0+DiYOAguaC6I+s grOCrZDdkuiCs4LqgsSCooLcgreBQicsDQogICAgICAgICAng1yDUINig2eC zIrWkJSMxILRj2+CtYLFg3aDjYNng1KDi4KqjneS6IKzguqC3IK1gr2CqoFB l3aLgYK1gr2DXINQg2KDZ4LMju2X3oLMjGCOroLwg1SDfIFbg2eCtYLEgqKC 3IK5gvGBQicsDQogICAgICAgICAnZ2V0c29ja29wdCCC3IK9gs0gc2V0c29j a29wdCCCzIzEgtGPb4K1gsWOd5LogrOC6oK9g0mDdoNWg4eDk4Lcgr2CzYOM g3iDi4LNgUGVc5a+gqmBQZazjPiCqYFBgqCC6YKigs2DVIN8gVuDZ4KzguqC xIKigtyCuYLxgUInLA0KICAgICAgICAgJ5d2i4GCtYK9g3aDjYNng1KDi4Kq g1aDWINlg4CCyY1ckKyCs4LqgsSCooLIgqKCqYFBgtyCvYLNkbaN3YK1gtyC uYLxgUInLA0KICAgICAgICAgJ453kuiCtYK9g1yDUINig2eCzI7tl96CzYFB grGCzINBg2iDjINYIIN0g0CDfoOKgsWDVIN8gVuDZ4KzguqCxIKigtyCuYLx gUInLA0KICAgICAgICAgJ47AjXOCtYLmgqSCxoK1gr2RgI3sgs2BQY5Rj8aC tYK9g0mDdYNXg0aDToNngsyO7ZfegsWCzYNUg3yBW4NngrOC6oLEgqKC3IK5 gvGBQicsDQogICAgICAgICAng3aDjYNng1KDiyCDdINAg36DioKqg1aDWINl g4CCyY1ckKyCs4LqgsSCooLIgqKCqYFBgtyCvYLNkbaN3YK1gtyCuYLxgUIn LA0KICAgICAgICAgJ5d2i4GCtYK9g3aDjYNng1KDi4LGjN2Kt5CrgqqCyIKi g0GDaIOMg1iC8I5nl3CCtYLcgrWCvYFCJywNCiAgICAgICAgICeSyo/tgUGK ZYNcg1CDYoNnIINBg2iDjINYgsmRzoK1gsSDdoONg2eDUoOLgUGDbINig2eD j4Fbg04gg0GDaIOMg1iBQYLcgr2CzYN8gVuDZ4LMgseC6oKpIDEggsKCzILd gvCOZ5dwgsWCq4LcgreBQicsDQogICAgICAgICAnl3aLgYK1gr2DQYNog4yD WILMg1KDk4Nlg0yDWINngqqWs4z4gsWCt4FCJywNCiAgICAgICAgICeDXINQ g2KDZ5GAjeyCyYLmguiDbINig2eDj4Fbg06CzJLijn6Cqoyfj2+Cs4LqgtyC tYK9gUInLA0KICAgICAgICAgJ5OekkKCxYKrgsiCooNsg2KDZ4OPgVuDToLF g1yDUINig2eRgI3sgvCOwI1zgrWC5oKkgsaCtYLcgrWCvYFCJywNCiAgICAg ICAgICeRgI3sgsyOwI1zkoaCySBrZWVwLWFsaXZlIJOujeyCyYLmgsGCxINH g4mBW4KqjJ+Pb4KzguqCvYK9gt+BQZDakbGCqpDYkmaCs4LqgtyCtYK9gUIn LA0KICAgICAgICAgJ4ptl6eCs4Lqgr2Q2pGxgqqDeoNYg2cgg1KDk4Nzg4WB W4NegVuCzINcg0WDZ4NFg0aDQYLJguaCwYLEkoaOfoKzguqC3IK1gr2BQics DQogICAgICAgICAnivmRtoLMkNqRsYLNg4qDgoFbg2cgg3qDWINngsmLrZCn k0mCyZDYkmaCs4LqgtyCtYK9gUInLA0KICAgICAgICAgJ4NWg1iDZYOAgsyD b4Nig3SDQIFbl8yI5oKqlXORq4K1gsSCooLpgqmBQYLcgr2CzYNMg4WBW4Kq gqKCwYLPgqKCyIK9gt+BQYNcg1CDYoNnkYCN7ILwjsCNc4LFgquC3IK5gvGC xYK1gr2BQicsDQogICAgICAgICAnivmCyZDakbGNz4LdgsyDXINQg2KDZ4LJ kc6CtYLEkNqRsYLwl3aLgYK1gtyCtYK9gUInLA0KICAgICAgICAgJ4Ncg1CD YoNngqqQ2pGxgrOC6oLEgqKCyIKigqmBQXNlbmR0byCMxILRj2+CtYLwjmeC wYLEg2aBW4Neg0+DiYOAIINcg1CDYoNngsWRl5BNgreC6YLGgquCyYNBg2iD jINYgqqOd5LogrOC6oLEgqKCyIKigr2C34FBg2aBW4NegsyRl47zkE2C8Jd2 i4GCt4LpgrGCxoLNi9aCtoLnguqCxIKigtyCt4FCJywNCiAgICAgICAgICeD XINQg2KDZ4KqiMiRT4LMg1aDg4Nig2eDX4NFg5OCzIzEgtGPb4K1gsWDVoOD g2KDZ4Nfg0WDk4KzguqCxIKigumCvYLfgUGDZoFbg16CzJGXjvOQTYLwl3aL gYK3gumCsYLGgs2L1oK2gueC6oLEgqKC3IK3gUInLA0KICAgICAgICAgJ4Kg gumDSoFbg2yDiyCDSYN1g1eDRoNOg2eC1oLMjlGPxoKqkb2Ct4KsgtyCt4FC JywNCiAgICAgICAgICeQ2pGxjc+C3YLMjMSC0Y9vgrWQ5oKqiOqS6ILMjp6K 1ILwid+CrILEguCQs4K1gq2JnpOagrWCyIKpgsGCvYK9gt+BQZDakbGCxYKr gtyCuYLxgsWCtYK9gUKC3IK9gs2Q2pGxjc+C3YLMg3qDWINngqqJnpOagrWC yIKpgsGCvYK9gt+BQYptl6eCs4Lqgr2Q2pGxgs2OuJRzgrWC3IK1gr2BQics DQogICAgICAgICAnkc6P24LMg1KDk4Nzg4WBW4NegVuCyYLmgsGCxIuRlNuC s4Lqgr2CvYLfgUGQ2pGxgsWCq4LcgrmC8YLFgrWCvYFCJywNCiAgICAgICAg ICeWvJFPgvCVz4q3gsWCq4LcgrmC8YFCJywNCiAgICAgICAgICdGaWxlbmFt ZSB0b28gbG9uZycsDQogICAgICAgICAniLaQ5oLMg3qDWINngqqS4o5+grWC xIKigumCvYLfgUGDXINQg2KDZ5GAjeyC8I7AjXOCxYKrgtyCuYLxgsWCtYK9 gUInLA0KICAgICAgICAgJ5OekkKCxYKrgsiCooN6g1iDZ4LJkc6CtYLEg1yD UINig2eRgI3sgvCOwI1zgrWC5oKkgsaCtYLcgrWCvYFCJywNCiAgICAgICAg ICdXaW5kb3dzIFNvY2tldHMggvCOwJGVgreC6Y/qjYeBQYK7guqC8JOvjp6C yY5nl3CCxYKrgumDQYN2g4qDUIFbg1aDh4OTgsyQlIKqjMCC54LqgsSCooLp j+qNh4KqgqCC6ILcgreBQicsDQogICAgICAgICAng06DSIFbg16CqpVzkauC tYLEgqKC3IK3gUInLA0KICAgICAgICAgJ4Nmg0KDWINOIINOg0iBW4NegqqV c5GrgrWCxIKigtyCt4FCJywNCiAgICAgICAgICeDdINAg0ODiyCDboOTg2iD i4LMjlGPxoLwl5iXcILFgquC3IK5gvGBQicsDQogICAgICAgICAnjYCW2oLN g42BW4NKg4uCxZeYl3CCxYKrgtyCuYLxgUInLA0KICAgICAgICBdDQogICAg ZGVmIHRlc3RfbWVzc2FnZQ0KICAgICAgRS56aXAoTSkuZWFjaCBkbyB8ZSwg bXwNCiAgICAgICAgYXNzZXJ0X2VxdWFsKG0sIGUubmV3Lm1lc3NhZ2UuZm9y Y2VfZW5jb2RpbmcoJ2NwOTMyJyksIGUudG9fcykNCiAgICAgIGVuZA0KICAg IGVuZA0KICBlbmQNCmVuZA0KDQo= --mimepart_4cb098e33e7b6_eedd20a0c81937--