[#14850] str[re, -1] raises NoMemoryError — nobu.nakada@...
なかだです。
6 messages
2001/10/03
[#14888] perl6 apocalypse 3 — nobu.nakada@...
なかだです。
7 messages
2001/10/04
[#14903] Re: [rubyist:0825] Re: Thread — nobu.nakada@...
なかだです。
8 messages
2001/10/09
[#14909] ext/socket h_addr_list — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
9 messages
2001/10/11
[#14922] alias $gvar — Koji Arai <JCA02266@...>
新井です。
19 messages
2001/10/14
[#14941] Re: alias $gvar
— matz@... (Yukihiro Matsumoto)
2001/10/16
まつもと ゆきひろです
[#14924] Re: alias $gvar
— nobu.nakada@...
2001/10/14
なかだです。
[#14932] Re: alias $gvar
— nobu.nakada@...
2001/10/15
なかだです。
[#14934] Re: alias $gvar
— Koji Arai <JCA02266@...>
2001/10/15
新井です。
[#14942] [BUG] SEGV: module_eval — Satoru Takabayashi <satoru@...>
こんなことする方が悪いという気がしますが、次のコードを実行す
5 messages
2001/10/16
[#14961] [PATCH] Marshal.load/dump — nobu.nakada@...
なかだです。
9 messages
2001/10/18
[#14962] alias var and trace_var — "K.Kosako" <kosako@...>
新井さんの指摘から、中田さんのパッチで
12 messages
2001/10/19
[#14963] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14965] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/19
nobu.nakada@nifty.ne.jpさんの
[#14967] Re: alias var and trace_var
— nobu.nakada@...
2001/10/19
なかだです。
[#14971] Re: alias var and trace_var
— "K.Kosako" <kosako@...>
2001/10/22
nobu.nakada@nifty.ne.jpさんの
[#14984] [PATCH] stack overflow while GC marking. — nobu.nakada@...
なかだです。
7 messages
2001/10/23
[#14987] tracer.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
5 messages
2001/10/23
[#14998] TCPSocket.gethostbyname で Segmentation fault — tomohiko machida <machida@...>
はじめまして。
4 messages
2001/10/25
[#15001] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
3 messages
2001/10/25
[#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
前田です。
[#15207] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15209] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15210] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15211] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[#15212] Re: eval.c (rb_stack_check): prohibit recursive raising error
— nobu.nakada@...
2001/11/19
なかだです。
[#15214] Re: eval.c (rb_stack_check): prohibit recursive raising error
— matz@... (Yukihiro Matsumoto)
2001/11/19
まつもと ゆきひろです
[ruby-dev:14914] Re: ext/socket h_addr_list
From:
WATANABE Tetsuya <tetsu@...>
Date:
2001-10-12 04:06:11 UTC
List:
ruby-dev #14914
渡辺哲也です。
In message "[ruby-dev:14913] Re: ext/socket h_addr_list"
on 01/10/12, WATANABE Tetsuya writes:
|このパッチですが、文字列表記の IP address
|('128.168.10.10' など) からホスト名をとりだしたい場
|合に失敗するので、もっと条件チェックしなければなら
|ないようです。うーん
こんな感じにしてしまいました...
これでいいかは不明だったりします。しばらく
使ってみようと思っています。
------------------------------
--- socket.c.org Thu Oct 4 20:37:49 2001
+++ socket.c Fri Oct 12 12:11:39 2001
@@ -960,6 +960,32 @@
#endif
#endif
+static int
+ck_addr(host)
+ VALUE host;
+{
+ char *name;
+ int i;
+
+ if (rb_obj_is_kind_of(host, rb_cInteger))
+ return 1;
+
+ name = RSTRING(host)->ptr;
+
+ if (*name == 0)
+ return 1;
+
+ if (RSTRING(host)->ptr[0] == '<' && strcmp(RSTRING(host)->ptr, "<broadcast>") == 0)
+ return 1;
+
+ for (i = 0; i < RSTRING(host)->len; i++) {
+ if (! ISDIGIT(name[i]) || name[i] == '.' || ISXDIGIT(name[i]) || name[i] == ':')
+ return 1;
+ }
+
+ return 0;
+}
+
/*
* NOTE: using gethostbyname() against AF_INET6 is a bad idea, as it
* does not initialize sin_flowinfo nor sin_scope_id properly.
@@ -992,9 +1018,13 @@
{
struct sockaddr_in *sin;
sin = (struct sockaddr_in *)&addr;
- h = gethostbyaddr((char *)&sin->sin_addr,
- sizeof(sin->sin_addr),
- sin->sin_family);
+ if (ck_addr(host)) {
+ h = gethostbyaddr((char *)&sin->sin_addr,
+ sizeof(sin->sin_addr),
+ sin->sin_family);
+ } else {
+ h = gethostbyname(RSTRING(host)->ptr);
+ }
break;
}
#ifdef INET6
@@ -1783,9 +1813,13 @@
{
struct sockaddr_in *sin;
sin = (struct sockaddr_in *)&addr;
- h = gethostbyaddr((char *)&sin->sin_addr,
- sizeof(sin->sin_addr),
- sin->sin_family);
+ if (ck_addr(host)) {
+ h = gethostbyaddr((char *)&sin->sin_addr,
+ sizeof(sin->sin_addr),
+ sin->sin_family);
+ } else {
+ h = gethostbyname(RSTRING(host)->ptr);
+ }
break;
}
#ifdef INET6
------------------------------