From: shugo@... (maeda shugo) Date: 1997-08-08T04:48:14+09:00 Subject: [ruby-dev:78] [Bug] Socket#send, Socket#recvfrom 前田です。 Pythonのftplib.pyを移植(rubyに書き直してるだけです)しているのですが、 socketのバグらしきものを見つけました。 一つはSocket#sendでtoを省略するとエラーになってしまうというもので、 もう一つはSocket#recvfromがSocket#recvと同じになっているという ものです。 パッチを付けておきます。 あと、TCPsocketでもsendやrecvを使いたいのですが...。 TCPsocketをSocketのサブクラスにする、というのはまずいですか? -- 前田 修吾 diff -u /home/shugo/src/ruby-1.0-970701/ext/socket/socket.c.orig /home/shugo/src/ruby-1.0-970701/ext/socket/socket.c --- /home/shugo/src/ruby-1.0-970701/ext/socket/socket.c.orig Fri Aug 8 02:52:14 1997 +++ /home/shugo/src/ruby-1.0-970701/ext/socket/socket.c Fri Aug 8 02:52:14 1997 @@ -922,7 +922,7 @@ #ifdef THREAD thread_fd_writable(fd); #endif - if (to) { + if (RTEST(to)) { Check_Type(to, T_STRING); n = sendto(fd, msg->ptr, msg->len, NUM2INT(flags), (struct sockaddr*)to->ptr, to->len); @@ -1218,7 +1218,7 @@ rb_define_method(cSocket, "send", sock_send, -1); rb_define_method(cSocket, "recv", sock_recv, -1); - rb_define_method(cSocket, "recvfrom", sock_recv, -1); + rb_define_method(cSocket, "recvfrom", sock_recvfrom, -1); rb_define_singleton_method(cSocket, "socketpair", sock_s_socketpair, 3); rb_define_singleton_method(cSocket, "pair", sock_s_socketpair, 3);