From: "Nobuyoshi.Nakada" Date: 2000-11-15T13:54:45+09:00 Subject: [ruby-dev:11526] Re: A problem of Socket methods on Windows なかだです。 At Wed, 15 Nov 2000 13:14:07 +0900 OKA Toshiyuki wrote: > "Nobuyoshi.Nakada" さん: > > というより、なぜか TO_SOCKET()/my_open_osfhandle() が抜けてるのでは。 > > それだと、socket.c/open_inet() から mybind を呼んでる、 > > status = bind(fd, res->ai_addr, res->ai_addrlen); > > の fd がソケットハンドルなので、いきなり TO_SOCKET() を呼ぶと > エラーになるのではないでしょうか。 そのための mysocket() での my_open_osfhandle() だったんですが、 myaccept() が抜けてました。 というか、ソケットハンドルが win32.c から出て行くこと自体がヘンじゃな いでしょうか。win32.c 以外ではあくまでファイルディスクリプタしか見えない はずのような気が。 diff -pruPX ./.excludes current/win32/win32.c devel/win32/win32.c --- current/win32/win32.c Tue Nov 14 16:10:31 2000 +++ devel/win32/win32.c Wed Nov 15 13:44:29 2000 @@ -2063,7 +2062,7 @@ myaccept (SOCKET s, struct sockaddr *add } if ((r = accept (TO_SOCKET(s), addr, addrlen)) == INVALID_SOCKET) errno = WSAGetLastError(); - return r; + return my_open_osfhandle(r, O_RDWR|O_BINARY); } #undef bind -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦