[#6712] ruby on GNU Hurd — Shugo Maeda <shugo@...>
前田です。
10 messages
1999/05/06
[#6728] Ruby 1.3.3-990507 — matz <matz@...>
Ruby 1.3.3-990507 is out, check out:
34 messages
1999/05/07
[#6731] Re: Ruby 1.3.3-990507
— Katsuyuki Komatsu <komatsu@...>
1999/05/07
小松です。
[#6735] Re: Ruby 1.3.3-990507
— matz@... (Yukihiro Matsumoto)
1999/05/07
まつもと ゆきひろです
[#6739] Re: Ruby 1.3.3-990507
— WATANABE Tetsuya <tetsu@...>
1999/05/08
渡辺哲也です。
[#6742] HP-UX 10.20 sed flaw (Re: Ruby 1.3.3-990507)
— Katsuyuki Komatsu <komatsu@...>
1999/05/08
小松です。
[#6747] Range(...) as Array index — akendo@...3.rim.or.jp
遠藤です。
11 messages
1999/05/10
[#6749] Re: Range(...) as Array index
— matz@... (Yukihiro Matsumoto)
1999/05/10
まつもと ゆきひろです
[#6751] Re: Range(...) as Array index
— akendo@...3.rim.or.jp
1999/05/10
On Mon, 10 May 1999 13:03:25 +0900
[#6752] Re: Range(...) as Array index
— matz@... (Yukihiro Matsumoto)
1999/05/10
まつもと ゆきひろです
[#6762] Re: Range(...) as Array index
— akendo@...3.rim.or.jp
1999/05/11
遠藤です。
[#6748] Is squeeze cursed? — akendo@...3.rim.or.jp
遠藤です。いつもお世話になっています。連休来のマニュアルと
5 messages
1999/05/10
[#6779] Re: private inner class (Re: Re: class def in class def) — Koji Oda <oda@...1.qnes.nec.co.jp>
小田@QNES です。
13 messages
1999/05/13
[#6781] Re: private inner class (Re: Re: class def in class def)
— matz@... (Yukihiro Matsumoto)
1999/05/13
まつもと ゆきひろです
[#6785] Re: private inner class (Re: Re: class def in class def)
— Koji Oda <oda@...1.qnes.nec.co.jp>
1999/05/13
小田@QNES です。
[#6816] Re: private inner class (Re: Re: class def in class def)
— matz@... (Yukihiro Matsumoto)
1999/05/15
まつもと ゆきひろです
[#6789] Ruby 1.3.3-990513 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.3-990513 is out, check out:
59 messages
1999/05/13
[#6811] Re: Ruby 1.3.3-990513
— Koji Oda <oda@...1.qnes.nec.co.jp>
1999/05/14
小田@QNES です。
[#6814] Re: Ruby 1.3.3-990513
— matz@... (Yukihiro Matsumoto)
1999/05/15
まつもと ゆきひろです
[#6821] Re: Ruby 1.3.3-990513
— Koji Oda <oda@...1.qnes.nec.co.jp>
1999/05/16
小田@QNES です。
[#6822] Re: Ruby 1.3.3-990513
— KIMURA Koichi <kimura@...>
1999/05/17
[#6825] Re: Ruby 1.3.3-990513
— Koji Oda <oda@...1.qnes.nec.co.jp>
1999/05/17
小田@QNES です。
[#6826] Re: Ruby 1.3.3-990513
— WATANABE Hirofumi <watanabe@...>
1999/05/17
わたなべです.
[#6832] Re: Ruby 1.3.3-990513
— matz@... (Yukihiro Matsumoto)
1999/05/17
まつもと ゆきひろです
[#6834] Re: Ruby 1.3.3-990513
— WATANABE Hirofumi <watanabe@...>
1999/05/17
わたなべです.
[#6790] Re: Ruby 1.3.3-990513
— Katsuyuki Komatsu <komatsu@...>
1999/05/13
小松です。
[#6815] Re: Ruby 1.3.3-990513
— matz@... (Yukihiro Matsumoto)
1999/05/15
まつもと ゆきひろです
[#6791] Re: Ruby 1.3.3-990513
— itojun@...
1999/05/13
[#6836] gcc -traditional or -ansi (Re: Ruby 1.3.3-990513)
— Katsuyuki Komatsu <komatsu@...>
1999/05/17
小松です。
[#6837] Re: gcc -traditional or -ansi (Re: Ruby 1.3.3-990513)
— EGUCHI Osamu <eguchi@...>
1999/05/17
3月の末に AC_C_CONST の追加をお願いした、
[#6820] Re: Ruby 1.3.3-990513
— Koji Arai <JCA02266@...>
1999/05/16
新井です。
[#6853] Re: Ruby 1.3.3-990513
— matz@... (Yukihiro Matsumoto)
1999/05/17
まつもと ゆきひろです
[#6866] Re: Ruby 1.3.3-990513
— Koji Arai <JCA02266@...>
1999/05/17
新井です。
[#6881] Re: Ruby 1.3.3-990513
— SHIROYAMA Takayuki <psi@...>
1999/05/18
[#6796] {0,2}(regex.c), nonzero?(numeric.c), random — akendo@...3.rim.or.jp
遠藤です。
7 messages
1999/05/14
[#6801] Re: {0,2}(regex.c), nonzero?(numeric.c), random
— akendo@...3.rim.or.jp
1999/05/14
自己フォローです。
[#6867] Re: Ruby 1.3.3-990513 — 助田 雅紀 <masaki.suketa@...>
助田です.
9 messages
1999/05/17
[#6891] Ruby 1.3.3-990518 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.3-990518 is out, check out:
19 messages
1999/05/18
[#6897] install report (1.3.3-990518)
— Katsuyuki Komatsu <komatsu@...>
1999/05/19
小松です。
[#6899] Re: Ruby 1.3.3-990518
— WATANABE Hirofumi <watanabe@...>
1999/05/19
わたなべです.
[#6895] Ruby on Win32 — smeet@...
this is smeet.
10 messages
1999/05/18
[#6917] [bug] GetoptLong#quiet — Shugo Maeda <shugo@...>
前田です。
7 messages
1999/05/20
[#6919] ext/socket/getaddrinfo.c tiny fix — Jun-ichiro itojun Hagino <itojun@...>
ext/socket/getaddrinfo.cに以下のpatchをおねがいします。
22 messages
1999/05/20
[#6921] Re: ext/socket/getaddrinfo.c tiny fix
— Jun-ichiro itojun Hagino <itojun@...>
1999/05/20
[#6924] Re: ext/socket/getaddrinfo.c tiny fix
— matz@... (Yukihiro Matsumoto)
1999/05/20
まつもと ゆきひろです
[#6932] Re: ext/socket/getaddrinfo.c tiny fix
— Katsuyuki Komatsu <komatsu@...>
1999/05/20
小松です。
[#6935] Re: ext/socket/getaddrinfo.c tiny fix
— matz@... (Yukihiro Matsumoto)
1999/05/20
まつもと ゆきひろです
[#6936] Re: ext/socket/getaddrinfo.c tiny fix
— itojun@...
1999/05/20
[#6938] Re: ext/socket/getaddrinfo.c tiny fix
— Katsuyuki Komatsu <komatsu@...>
1999/05/21
小松です。
[#6949] socket for rubymw — Koji Oda <oda@...1.qnes.nec.co.jp>
小田@QNES です。
6 messages
1999/05/21
[#6953] RString#len — Shugo Maeda <shugo@...>
前田です。
9 messages
1999/05/23
[#6965] Re: RString#len
— matz@... (Yukihiro Matsumoto)
1999/05/24
まつもと ゆきひろです
[#6954] [PATCH] ext/Win32API/Win32API.c — WATANABE Hirofumi <eban@...>
わたなべです.
2 messages
1999/05/23
[#6957] #include "ruby.h" — ARIMA Yasuhiro <fit0298@...>
有馬です。
6 messages
1999/05/24
[#6961] date format — Shugo Maeda <shugo@...>
前田です。
7 messages
1999/05/24
[#6987] http-access — TAKAHASHI Masayoshi <maki@...>
高橋征義です。ごぶさたしております。
5 messages
1999/05/25
[#6992] ruby lacks some features of tr in Perl — Inaba Hiroto <inaba@...>
稲葉です。
4 messages
1999/05/25
[#6996] Local variable in for block — Akira Endo <akendo@...3.rim.or.jp>
遠藤です。
10 messages
1999/05/26
[#6997] Re: Local variable in for block
— matz@... (Yukihiro Matsumoto)
1999/05/26
まつもと ゆきひろです
[#6999] Re: Local variable in for block
— Akira Endo <akendo@...3.rim.or.jp>
1999/05/26
遠藤です。
[#7015] [BUG] [Re: Local variable in for block]
— keiju@... (石塚圭樹)
1999/05/28
けいじゅ@日本ラショナルソフトウェアです.
[#7020] Re: [BUG] [Re: Local variable in for block]
— matz@... (Yukihiro Matsumoto)
1999/05/28
まつもと ゆきひろです
[#7000] IOError in threading — Masaki Fukushima <fukusima@...>
福嶋です。
7 messages
1999/05/26
[#7034] Ruby 1.3.4-990531 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.4-990531 is out, check out:
25 messages
1999/05/31
[#7038] [PATCH] Ruby 1.3.4-990531
— KIMURA Koichi <kimura@...>
1999/05/31
[ruby-dev:6921] Re: ext/socket/getaddrinfo.c tiny fix
From:
Jun-ichiro itojun Hagino <itojun@...>
Date:
1999-05-20 04:25:36 UTC
List:
ruby-dev #6921
> ext/socket/getaddrinfo.cに以下のpatchをおねがいします。
> IPv4 only kernelの上でgetaddrinfo(NULL, "ftp", &hints, &res)
> (hints.ai_flags = AI_PASSIVE)としたときにAF_INET6のアドレスが
> 返るのをふせぎます。
そいから、各所の
struct sockaddr ss;
は
struct sockaddr_storage ss;
でないといけません。struct sockaddrの現物を定義するとIPv6 support
できなくなります。
sizeof(struct sockaddr) < sizeof(struct sockaddr_in6)なので。
extconf.rbでなにかsockaddr_storage=trueという記述がありますが、
ソースになにも気配がないのでどう対処すべきかいまいちわかりませんでした。
とりあえず#ifdef INET6でいってますが、これは嘘かも。
すいません、IPv4 only hostで試していません。
itojun
---
Index: socket.c
===================================================================
RCS file: /home/cvs/ruby/ext/socket/socket.c,v
retrieving revision 1.1.1.3.2.15
diff -c -r1.1.1.3.2.15 socket.c
*** socket.c 1999/05/11 01:34:33 1.1.1.3.2.15
--- socket.c 1999/05/20 04:01:45
***************
*** 72,77 ****
--- 72,83 ----
#define INET_SERVER 1
#define INET_SOCKS 2
+ #ifndef INET6
+ # define sockaddr_storage sockaddr
+ # define ss_family sa_family
+ # define ss_len sa_len
+ #endif
+
#ifdef NT
static void
sock_finalize(fptr)
***************
*** 692,698 ****
tcp_s_gethostbyname(obj, host)
VALUE obj, host;
{
! struct sockaddr addr;
struct hostent *h;
char **pch;
VALUE ary, names;
--- 698,704 ----
tcp_s_gethostbyname(obj, host)
VALUE obj, host;
{
! struct sockaddr_storage addr;
struct hostent *h;
char **pch;
VALUE ary, names;
***************
*** 709,715 ****
else {
setipaddr(STR2CSTR(host), (struct sockaddr *)&addr);
}
! switch (addr.sa_family) {
case AF_INET:
{
struct sockaddr_in *sin;
--- 715,721 ----
else {
setipaddr(STR2CSTR(host), (struct sockaddr *)&addr);
}
! switch (addr.ss_family) {
case AF_INET:
{
struct sockaddr_in *sin;
***************
*** 752,758 ****
rb_ary_push(ary, INT2NUM(h->h_addrtype));
#ifdef h_addr
for (pch = h->h_addr_list; *pch; pch++) {
! switch (addr.sa_family) {
case AF_INET:
{
struct sockaddr_in sin;
--- 758,764 ----
rb_ary_push(ary, INT2NUM(h->h_addrtype));
#ifdef h_addr
for (pch = h->h_addr_list; *pch; pch++) {
! switch (addr.ss_family) {
case AF_INET:
{
struct sockaddr_in sin;
***************
*** 787,793 ****
}
#else
memcpy((char *)&addr.sin_addr, h->h_addr, h->h_length);
! rb_ary_push(ary, mkipaddr(addr.sin_addr.s_addr));
#endif
return ary;
--- 793,799 ----
}
#else
memcpy((char *)&addr.sin_addr, h->h_addr, h->h_length);
! rb_ary_push(ary, mkipaddr((struct sockaddr *)&addr));
#endif
return ary;
***************
*** 844,850 ****
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr from;
int fromlen;
GetOpenFile(sock, fptr);
--- 850,856 ----
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr_storage from;
int fromlen;
GetOpenFile(sock, fptr);
***************
*** 910,916 ****
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr addr;
int len = sizeof addr;
GetOpenFile(sock, fptr);
--- 916,922 ----
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr_storage addr;
int len = sizeof addr;
GetOpenFile(sock, fptr);
***************
*** 925,931 ****
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr addr;
int len = sizeof addr;
GetOpenFile(sock, fptr);
--- 931,937 ----
VALUE sock;
{
OpenFile *fptr;
! struct sockaddr_storage addr;
int len = sizeof addr;
GetOpenFile(sock, fptr);
***************
*** 939,945 ****
ip_s_getaddress(obj, host)
VALUE obj, host;
{
! struct sockaddr addr;
if (rb_obj_is_kind_of(host, rb_cInteger)) {
long i = NUM2LONG(host);
--- 945,951 ----
ip_s_getaddress(obj, host)
VALUE obj, host;
{
! struct sockaddr_storage addr;
if (rb_obj_is_kind_of(host, rb_cInteger)) {
long i = NUM2LONG(host);
***************
*** 1049,1055 ****
udp_bind(sock, host, port)
VALUE sock, host, port;
{
- struct sockaddr addr;
OpenFile *fptr;
struct addrinfo *res0, *res;
--- 1055,1060 ----
***************
*** 1514,1520 ****
sock_s_gethostbyname(obj, host)
VALUE obj, host;
{
! struct sockaddr addr;
struct hostent *h;
if (rb_obj_is_kind_of(host, rb_cInteger)) {
--- 1519,1525 ----
sock_s_gethostbyname(obj, host)
VALUE obj, host;
{
! struct sockaddr_storage addr;
struct hostent *h;
if (rb_obj_is_kind_of(host, rb_cInteger)) {
***************
*** 1529,1535 ****
else {
setipaddr(STR2CSTR(host), (struct sockaddr *)&addr);
}
! switch (addr.sa_family) {
case AF_INET:
{
struct sockaddr_in *sin;
--- 1534,1540 ----
else {
setipaddr(STR2CSTR(host), (struct sockaddr *)&addr);
}
! switch (addr.ss_family) {
case AF_INET:
{
struct sockaddr_in *sin;
***************
*** 1685,1691 ****
int fl;
struct addrinfo hints, *res = NULL;
int error;
! struct sockaddr ss;
struct sockaddr *sap;
sa = flags = Qnil;
--- 1690,1696 ----
int fl;
struct addrinfo hints, *res = NULL;
int error;
! struct sockaddr_storage ss;
struct sockaddr *sap;
sa = flags = Qnil;
***************
*** 1696,1702 ****
rb_raise(rb_eTypeError, "sockaddr length too big");
}
memcpy(&ss, RSTRING(sa)->ptr, RSTRING(sa)->len);
! if (RSTRING(sa)->len != SA_LEN(&ss)) {
rb_raise(rb_eTypeError, "sockaddr size differs - should not happen");
}
sap = (struct sockaddr *)&ss;
--- 1701,1707 ----
rb_raise(rb_eTypeError, "sockaddr length too big");
}
memcpy(&ss, RSTRING(sa)->ptr, RSTRING(sa)->len);
! if (RSTRING(sa)->len != SA_LEN((struct sockaddr *)&ss)) {
rb_raise(rb_eTypeError, "sockaddr size differs - should not happen");
}
sap = (struct sockaddr *)&ss;