[#38020] irb で %W(#{...}) — yoshihisa masuda <sacong@...>
マスダといいます。
[#38036] undef variable — hirocy <hirocy@...>
hirocyです.
[#38039] proc method — "K.Sasada" <ko1@...>
こんにちは。ささだです。
[#38056] ファイル書換え? — 中村文建 <tx6f-nkmr@...>
初めまして、MLに参加させて頂く中村と申します。
[#38057] [ANN] Ruby-GNOME2-0.6.0 — Masao Mutoh <mutoh@...>
むとうです。
[#38059] [ANN] rbbr-0.3.0 — Masao Mutoh <mutoh@...>
むとうです。
[#38073] module extendable? — Takeshi Horinouchi <horinout@...>
堀之内と申します。
[#38080] ポートが閉じているときの例外など — Mitsuru Ogino <ogino@...>
荻野と申します。いつも質問や要望ばかりですみません。
なかだです。
いわおかです。
荻野です。
なかだです。
いわおかです。
In message <20030812150516.GV37221@barber.fe.rn.tuat.ac.jp>
中川と申します。
In message <20030814.140757.707824131.tetsuo@sapphire.siz.nes.nec.co.jp>
なかだです。
In message <200308160517.h7G5HcPL012839@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In message <200308180959.h7I9xnb7001977@sharui.nakada.kanuma.tochigi.jp>
なかだです。
まつもと ゆきひろです
[#38090] ruby-1.8 で eruby が SEGV — Kazuhiko <kazuhiko@...>
かずひこです。
[#38104] XMLRPC::ModRubyServer — OHARA Shigeki <os@...>
大原です。
[#38122] ruby-tcpwrap and mkmf.rb — Takahiro Kambe <taca@...>
こんにちは。
At Sat, 16 Aug 2003 12:51:55 +0900,
In message <200308160518.h7G5IXPL012842@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In message <200308160714.h7G7ErPL014647@sharui.nakada.kanuma.tochigi.jp>
前田です。
In message <87d6f3znlc.wl@kirk.priv.netlab.jp>
前田です。
わたなべです。
[#38164] Ruby1.8.0でRuby-PostgreSQLがビルドできない — kensaku Maki <sakaki@...>
はじめまして、まきと申します。
[#38183] String << の動作につきまして — kuto@...
うと と申します。
たけ(tk)です。
ふなばです。
たけ(tk)です。
ふなばです。
たけ(tk)です。
ふなばです。
ども、西啓一朗@Ktouth Brand. です。
ふなばです。
ども、西啓一朗@Ktouth Brand. です。
[#38195] 理解の進め方(Re: String << の動作につきまして) — Tadashi Oh-Ya <toy@...>
おおやです。
たけ(tk)です。
In "[ruby-list:38206] 理解の進め方:シュールな世界"
たけ(tk)です
[#38198] Tmailで送るメールに日付がつけられなくなりました — 川田誠司 <kawada.seiji@...>
はじめまして
[#38256] かみ砕いた説明をすべき範囲 — 西 啓一朗 <receiver@...>
ども。西啓一朗@Ktouth Brand. です。
なかだです。
たけ(tk)です
なかだです。
たけ(tk)です
いわおかです。
たけ(tk)です
まつもと ゆきひろです
たけ(tk)です。
たけ(tk)です。
[ruby-list:38152] Re: ポートが閉じているときの例外など
なかだです。
At Tue, 19 Aug 2003 01:44:54 +0900,
Takahiro Kambe wrote:
> LAN上のホストを相手にすると、EINPROGRESSの場合にgetsockopt(2)でチェッ
> クしない場合は、
>
> 1. connect()失敗 (EINPROGRESS)
> 2. connect()失敗 (EINVAL)
> 3. getsockopt()で ECONNREFUSED を検知
>
> となります。
>
> CPUが高速、メモリやハードディスクがいっぱいになっても、システムコール
> にかかるオーバーヘッドは、(システムコールの呼び出しを伴わない)ライブラ
> リに比べるとはるかに大きいものです。必要のないシステムコールの呼び出し
> をやめることができることができれば、それに越したことはありません。
1の時点でECONNREFUSEDが分かっていない場合には、いわおかさんの例
([ruby-list:38142])のように、逆にgetsockopt()が無駄になるように
思えますが。
EALREADYを別にすればいい?
> > 対応としては、FreeBSD(*BSD全部?)でもWAIT_IN_PROGRESSを有効にす
> > るということでいいんでしょうか。全システムで有効にしたほうがい
> > いのかな?
> 以下の環境の確認はできました。
>
> NetBSD 1.6 and current
> FreeBSD 2.2.8
> OpenBSD 3.3
それぞれ、__NetBSD__, __FreeBSD__, __OpenBSD__でいいでしょうか。
Index: ext/socket/socket.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/socket/socket.c,v
retrieving revision 1.99
diff -u -2 -p -r1.99 socket.c
--- ext/socket/socket.c 1 Aug 2003 07:02:54 -0000 1.99
+++ ext/socket/socket.c 19 Aug 2003 05:10:21 -0000
@@ -732,4 +732,7 @@ thread_write_select(fd)
#define WAIT_IN_PROGRESS 10
#endif
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#define WAIT_IN_PROGRESS 1
+#endif
static int
@@ -744,4 +747,5 @@ ruby_connect(fd, sockaddr, len, socks)
#ifdef WAIT_IN_PROGRESS
int wait_in_progress = -1;
+ int sockerr, sockerrlen = sizeof(sockerr);
#endif
@@ -780,4 +784,13 @@ ruby_connect(fd, sockaddr, len, socks)
case EINPROGRESS:
#endif
+#ifdef WAIT_IN_PROGRESS
+ status = getsockopt(fd, SOL_SOCKET, SO_ERROR, &sockerr, &sockerrlen);
+ if (status) break;
+ if (sockerr) {
+ status = -1;
+ errno = sockerr;
+ break;
+ }
+#endif
#ifdef EALREADY
case EALREADY:
@@ -792,6 +805,4 @@ ruby_connect(fd, sockaddr, len, socks)
case EINVAL:
if (wait_in_progress-- > 0) {
- int sockerr, sockerrlen = sizeof(sockerr);
-
/*
* connect() after EINPROGRESS returns EINVAL on
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦