[#9627] callargs([nil]) — nobu.nakada@...
なかだです。
8 messages
2000/05/04
[#9642] Re: host.conf は参照しないの? — akira yamada / やまだあきら <akira@...>
15 messages
2000/05/09
[#9643] Thread schedule problem of 1.5.3 (2000-05-09) — Katsuyuki Komatsu <komatsu@...>
小松です。
4 messages
2000/05/09
[#9652] 1.5.3 cleanup — Katsuyuki Komatsu <komatsu@...>
小松です。
13 messages
2000/05/11
[#9653] Re: 1.5.3 cleanup
— matz@... (Yukihiro Matsumoto)
2000/05/11
まつもと ゆきひろです
[#9654] Re: 1.5.3 cleanup
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/11
わたなべです.
[#9660] [PATCH] md5 fix for alpha — Katsuyuki Komatsu <komatsu@...>
小松です。
5 messages
2000/05/11
[#9671] busy loop in `waitpid' — nobu.nakada@...
なかだです。
9 messages
2000/05/13
[#9684] Re: busy loop in `waitpid'
— matz@... (Yukihiro Matsumoto)
2000/05/14
まつもと ゆきひろです
[#9672] IO.popen — Koji Arai <JCA02266@...>
新井です。
22 messages
2000/05/13
[#9673] Re: IO.popen
— Koji Arai <JCA02266@...>
2000/05/13
新井です。
[#9682] Re: IO.popen
— matz@... (Yukihiro Matsumoto)
2000/05/14
まつもと ゆきひろです
[#9685] Re: IO.popen
— Koji Arai <JCA02266@...>
2000/05/14
新井です。
[#9696] Re: IO.popen
— matz@... (Yukihiro Matsumoto)
2000/05/15
まつもと ゆきひろです
[#9676] support mingw32 — WATANABE Hirofumi <eban@...>
わたなべです.
32 messages
2000/05/13
[#9701] Re: support mingw32
— Katsuyuki Komatsu <komatsu@...>
2000/05/16
小松です。
[#9705] Re: support mingw32
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/16
わたなべです.
[#9678] Re: support mingw32
— Masaki Suketa <CQN02273@...>
2000/05/14
助田です.
[#9680] Re: support mingw32
— WATANABE Hirofumi <eban@...>
2000/05/14
わたなべです.
[#9686] Re: support mingw32
— Katsuyuki Komatsu <komatsu@...>
2000/05/15
小松です。
[#9687] Re: support mingw32
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/15
わたなべです.
[#9713] Re: support mingw32
— Katsuyuki Komatsu <komatsu@...>
2000/05/16
小松です。
[#9689] Re: support mingw32
— matz@... (Yukihiro Matsumoto)
2000/05/15
まつもと ゆきひろです
[#9690] Re: support mingw32
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/15
わたなべです.
[#9725] SEGV on thread and socket — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
11 messages
2000/05/17
[#9731] Re: SEGV on thread and socket
— matz@... (Yukihiro Matsumoto)
2000/05/17
まつもと ゆきひろです
[#9732] Re: SEGV on thread and socket
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/17
わたなべです.
[#9756] deadlock detection problem — Katsuyuki Komatsu <komatsu@...>
小松です。
5 messages
2000/05/18
[#9760] date2.rb and cal.rb — Tadayoshi Funaba <tadf@...>
ふなばです。
8 messages
2000/05/18
[#9761] IRIX 6.5 cc -64 support — Katsuyuki Komatsu <komatsu@...>
小松です。
9 messages
2000/05/19
[#9766] Re: IRIX 6.5 cc -64 support
— matz@... (Yukihiro Matsumoto)
2000/05/19
まつもと ゆきひろです
[#9780] No such file to load -- CWD's script — WATANABE Hirofumi <eban@...>
わたなべです.
5 messages
2000/05/20
[#9806] rescue variable syntax — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
40 messages
2000/05/24
[#9808] Re: rescue variable syntax
— OZAWA Sakuro <crouton@...>
2000/05/24
さくです。
[#9811] Re: rescue variable syntax
— ARIMA Yasuhiro <fit0298@...>
2000/05/24
有馬です。
[#9814] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/24
まつもと ゆきひろです
[#9821] Re: rescue variable syntax
— nobu.nakada@...
2000/05/25
なかだです。
[#9823] Re: rescue variable syntax
— ARIMA Yasuhiro <fit0298@...>
2000/05/25
有馬です。
[#9833] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/25
まつもと ゆきひろです
[#9861] Re: rescue variable syntax
— gotoken@... (GOTO Kentaro)
2000/05/25
ごとけんです
[#9866] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/25
まつもと ゆきひろです
[#9870] Re: rescue variable syntax
— nagai@...
2000/05/26
永井@知能.九工大です.
[#9873] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/27
まつもと ゆきひろです
[#9874] Re: rescue variable syntax
— nagai@...
2000/05/27
永井@知能.九工大です.
[#9883] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/28
まつもと ゆきひろです
[#9884] Re: rescue variable syntax
— ARIMA Yasuhiro <fit0298@...>
2000/05/28
有馬です。
[#9888] Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/05/29
まつもと ゆきひろです
[#9968] 例外補足 ( Re: rescue variable syntax
— ARIMA Yasuhiro <fit0298@...>
2000/06/06
有馬です。
[#9969] Re: 例外補足 ( Re: rescue variable syntax
— matz@... (Yukihiro Matsumoto)
2000/06/06
まつもと ゆきひろです
[#9970] Re: 例外補足 ( Re: rescue variable syntax
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/06/06
わたなべです.
[#9812] Forward: Error in NT makefile (PR#7) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
21 messages
2000/05/24
[#9817] Re: Forward: Error in NT makefile (PR#7)
— KIMURA Koichi <kimura@...>
2000/05/24
[#9820] Re: Forward: Error in NT makefile (PR#7)
— Katsuyuki Komatsu <komatsu@...>
2000/05/25
小松です。
[#9842] Re: Forward: Error in NT makefile (PR#7)
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/25
わたなべです.
[#9855] Re: Forward: Error in NT makefile (PR#7)
— Katsuyuki Komatsu <komatsu@...>
2000/05/25
小松です。
[#9879] Re: Forward: Error in NT makefile (PR#7)
— WATANABE Hirofumi <eban@...>
2000/05/28
わたなべです.
[#9882] Re: Forward: Error in NT makefile (PR#7)
— WATANABE Hirofumi <eban@...>
2000/05/28
わたなべです.
[#9900] Re: Forward: Error in NT makefile (PR#7)
— Katsuyuki Komatsu <komatsu@...>
2000/05/29
小松です。
[#9921] Re: Forward: Error in NT makefile (PR#7)
— Katsuyuki Komatsu <komatsu@...>
2000/05/31
小松です。
[#9922] Re: Forward: Error in NT makefile (PR#7)
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/31
わたなべです.
[#9938] Re: Forward: Error in NT makefile (PR#7)
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/06/01
わたなべです.
[#9941] Re: Forward: Error in NT makefile (PR#7)
— Katsuyuki Komatsu <komatsu@...>
2000/06/01
小松です。
[#9947] Re: Forward: Error in NT makefile (PR#7)
— matz@... (Yukihiro Matsumoto)
2000/06/01
まつもと ゆきひろです
[#9824] [BUG?] regex/scan — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
6 messages
2000/05/25
[#9841] timeout.rb — Wakou Aoyama <wakou@...>
青山です。
14 messages
2000/05/25
[#9844] Re: timeout.rb
— matz@... (Yukihiro Matsumoto)
2000/05/25
まつもと ゆきひろです
[#9846] Re: timeout.rb
— Wakou Aoyama <wakou@...>
2000/05/25
青山です。
[#9848] Re: timeout.rb
— Wakou Aoyama <wakou@...>
2000/05/25
青山です。
[#9857] $0 handling on NT — Katsuyuki Komatsu <komatsu@...>
小松です。
18 messages
2000/05/25
[#9869] Re: $0 handling on NT
— nobu.nakada@...
2000/05/26
なかだです。
[#9880] Re: $0 handling on NT
— WATANABE Hirofumi <eban@...>
2000/05/28
わたなべです.
[#9887] Re: $0 handling on NT
— nobu.nakada@...
2000/05/29
なかだです。
[#9890] Re: $0 handling on NT
— WATANABE Hirofumi <Hirofumi.Watanabe@...>
2000/05/29
わたなべです.
[#9925] — Shin-ichiro Hara <sinara@...>
原です。
8 messages
2000/05/31
[ruby-dev:9648] Re: host.conf は参照しないの?
From:
akira yamada / やまだあきら <akira@...>
Date:
2000-05-10 03:32:35 UTC
List:
ruby-dev #9648
Wed, 10 May 2000 02:06:22 +0900 頃の
Mail-Count: 9646
Subject: [ruby-dev:9646] Re: host.conf は参照しないの?
についてのお話にて Yukihiro Matsumoto さん曰く…
(Y == matz@netlab.co.jp (Yukihiro Matsumoto) さん)
In article 9646, <E12pDMG-00018A-00@ev.netlab.co.jp>
Y> [ruby-dev:9644]の配列
Y> を使う方法はちょっと脆弱な気がします。コンパイル時に指定でき
Y> ればそれで良いというようなものなのでしょうか。それともやっぱ
Y> り動的に指定できないと駄目?
extconf に with_config("ipv6-lookup-order","INET") を追加した上で,
たとえばこんなんだとどうですかね?
diff -rU3 /home/akira/src/ruby-cvs/ruby_1_4/ext/socket/socket.c ./socket.c
--- /src/ruby-cvs/ruby_1_4/ext/socket/socket.c Mon May 8 06:55:27 2000
+++ ./socket.c Wed May 10 12:27:10 2000
@@ -104,6 +104,78 @@
};
#endif
+#ifdef INET6
+#define LOOKUP_ORDERS 3
+int lookup_order_table[LOOKUP_ORDERS][LOOKUP_ORDERS] = {
+#define LOOKUP_ORDER_INET 0
+ {PF_UNSPEC, PF_UNSPEC, PF_UNSPEC}, /* 0:unspec */
+#define LOOKUP_ORDER_INET6 1
+ {PF_INET, PF_INET6, PF_UNSPEC}, /* 1:inet inet6 */
+#define LOOKUP_ORDER_UNSPEC 2
+ {PF_INET6, PF_INET, PF_UNSPEC} /* 2:inet6 inet */
+};
+#if DEFAULT_LOOKUP_ORDER == INET
+# define LOOKUP_ORDER_DEFAULT LOOKUP_ORDER_INET
+#elif DEFAULT_LOOKUP_ORDER == INET6
+# define LOOKUP_ORDER_DEFAULT LOOKUP_ORDER_INET6
+#elif DEFAULT_LOOKUP_ORDER == UNSPEC
+# define LOOKUP_ORDER_DEFAULT LOOKUP_ORDER_UNSPEC
+#endif
+static int
+rb_getaddrinfo(nodename, servname, hints, res)
+ char *nodename;
+ char *servname;
+ struct addrinfo *hints;
+ struct addrinfo **res;
+{
+
+ struct addrinfo tmp_hints;
+ int i, af, error;
+ VALUE lookup_order;
+ ID lookup_order_id;
+
+ lookup_order_id = rb_intern("LOOKUP_ORDER");
+#if 0
+ if (rb_const_defined(rb_cSocket, lookup_order_id)) {
+ lookup_order = rb_const_get(rb_cSocket, lookup_order_id);
+ }
+#endif
+ if (rb_const_defined(rb_cObject, lookup_order_id)) {
+ lookup_order = rb_const_get(rb_cObject, lookup_order_id);
+ }
+ else {
+ lookup_order = LOOKUP_ORDER_DEFAULT;
+ }
+
+ if (TYPE(lookup_order) != T_FIXNUM) {
+ rb_raise(rb_eRuntimeError,
+ "invalid value of type for LOOKUP_ORDER (expected Fixnum)");
+ }
+ lookup_order = FIX2INT(lookup_order);
+
+ if (lookup_order < 0 || LOOKUP_ORDERS <= lookup_order) {
+ rb_raise(rb_eRuntimeError, "invalid value for LOOKUP_ORDER");
+ }
+
+ for (i = 0; i < LOOKUP_ORDERS; i++) {
+ af = lookup_order_table[lookup_order][i];
+ MEMCPY(&tmp_hints, hints, struct addrinfo, 1);
+ tmp_hints.ai_family = af;
+ error = getaddrinfo(nodename, servname, &tmp_hints, res);
+ if (error) {
+ if (tmp_hints.ai_family == PF_UNSPEC) {
+ break;
+ }
+ }
+ else {
+ break;
+ }
+ }
+
+ return error;
+}
+#endif
+
#ifdef NT
static void
sock_finalize(fptr)
@@ -545,7 +617,11 @@
MEMZERO(&hints, struct addrinfo, 1);
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
+#ifndef INET6
error = getaddrinfo(hostp, portp, &hints, &res);
+#else
+ error = rb_getaddrinfo(hostp, portp, &hints, &res);
+#endif
if (error) {
if (hostp && hostp[strlen(hostp)-1] == '\n') {
rb_raise(rb_eSocket, "newline at the end of hostname");
@@ -736,7 +812,11 @@
if (type == INET_SERVER) {
hints.ai_flags = AI_PASSIVE;
}
+#ifndef INET6
error = getaddrinfo(host, portp, &hints, &res0);
+#else
+ error = rb_getaddrinfo(host, portp, &hints, &res0);
+#endif
if (error) {
rb_raise(rb_eSocket, "%s", gai_strerror(error));
}
@@ -1755,9 +1835,11 @@
if (!NIL_P(family)) {
hints.ai_family = NUM2INT(family);
}
+#ifndef INET6
else {
hints.ai_family = PF_UNSPEC;
}
+#endif
if (!NIL_P(socktype)) {
hints.ai_socktype = NUM2INT(socktype);
}
@@ -1767,7 +1849,16 @@
if (!NIL_P(flags)) {
hints.ai_flags = NUM2INT(flags);
}
+#ifndef INET6
error = getaddrinfo(hptr, pptr, &hints, &res);
+#else
+ if (!NIL_P(family)) {
+ error = getaddrinfo(hptr, pptr, &hints, &res);
+ }
+ else {
+ error = rb_getaddrinfo(hptr, pptr, &hints, &res);
+ }
+#endif
if (error) {
rb_raise(rb_eSocket, "%s", gai_strerror(error));
}
@@ -2035,6 +2126,11 @@
#endif
#ifdef PF_INET6
sock_define_const("PF_INET6", PF_INET6);
+#endif
+#ifdef INET6
+ sock_define_const("LOOKUP_INET", LOOKUP_ORDER_INET);
+ sock_define_const("LOOKUP_INET6", LOOKUP_ORDER_INET6);
+ sock_define_const("LOOKUP_UNSPEC", LOOKUP_ORDER_UNSPEC);
#endif
sock_define_const("MSG_OOB", MSG_OOB);
ただ, これをするなら, ホントは,
Socket::LOOKUP_ORDER とかでなんとかしたいとこなんでしょうが,
うまい方法がわかんなかったです.
# バランス悪いような…