[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:14912] Re: ext/socket h_addr_list

From: WATANABE Tetsuya <tetsu@...>
Date: 2001-10-12 02:29:27 UTC
List: ruby-dev #14912
渡辺哲也です。

In message "[ruby-dev:14909] ext/socket h_addr_list"
    on 01/10/11, WATANABE Tetsuya writes:

|TCPSocket.gethostbyname(hostname)
|
|で、一つのホストが複数の IP address を持って
|いる場合、うまくとれないようです。

とりあえずのテスト用パッチです。IPv6 は、テスト
環境がないのでつめ込みませんでした。

Socket.gethostbyname(hostname) も、よく読んだら
同様の複数の IP address に対応できるコードだっ
たので、同じようなコードを入れてみました。

もし、必要になったら試してみてください。

------------------------------
--- socket.c.org	Thu Oct  4 20:37:49 2001
+++ socket.c	Thu Oct 11 22:02:29 2001
@@ -992,9 +992,15 @@
       {
 	struct sockaddr_in *sin;
 	sin = (struct sockaddr_in *)&addr;
-	h = gethostbyaddr((char *)&sin->sin_addr,
-			  sizeof(sin->sin_addr),
-			  sin->sin_family);
+	if (rb_obj_is_kind_of(host, rb_cInteger) ||
+	    RSTRING(host)->ptr == 0 ||
+	    (RSTRING(host)->ptr[0] == '<' && strcmp(RSTRING(host)->ptr, "<broadcast>") == 0)) {
+	  h = gethostbyaddr((char *)&sin->sin_addr,
+			    sizeof(sin->sin_addr),
+			    sin->sin_family);
+	} else {
+	  h = gethostbyname(RSTRING(host)->ptr);
+	}
 	break;
       }
 #ifdef INET6
@@ -1783,9 +1789,15 @@
       {
 	struct sockaddr_in *sin;
 	sin = (struct sockaddr_in *)&addr;
-	h = gethostbyaddr((char *)&sin->sin_addr,
-			  sizeof(sin->sin_addr),
-			  sin->sin_family);
+	if (rb_obj_is_kind_of(host, rb_cInteger) ||
+	    RSTRING(host)->ptr == 0 ||
+	    (RSTRING(host)->ptr[0] == '<' && strcmp(RSTRING(host)->ptr, "<broadcast>") == 0)) {
+	  h = gethostbyaddr((char *)&sin->sin_addr,
+			    sizeof(sin->sin_addr),
+			    sin->sin_family);
+	} else {
+	  h = gethostbyname(RSTRING(host)->ptr);
+	}
 	break;
       }
 #ifdef INET6
------------------------------

In This Thread