[#30426] CGI でグラフを描くときにお勧めのライブラリは? — 堀川 久 <vzw00011@...>

こんにちは。

12 messages 2001/07/01

[#30453] syntax check without execution? — Tanaka Akira <akr@...17n.org>

最近、eRuby のまねごとをしていて、そのなかで Ruby のコードを生成してい

16 messages 2001/07/04
[#30455] Re: syntax check without execution? — matz@... (Yukihiro Matsumoto) 2001/07/04

まつもと ゆきひろです

[#30479] Object#dup — "Shin'ya Adzumi" <adzumi@...>

あづみです。

20 messages 2001/07/05

[#30512] open errno EALREADY triggerd — "Inoue" <inoue@...>

井上です。

16 messages 2001/07/08

[#30514] Ruby module frame work? — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2001/07/09
[#30515] Re: Ruby module frame work? — matz@... (Yukihiro Matsumoto) 2001/07/09

まつもと ゆきひろです

[#30529] InterBase を使用したい — "YOUJI KUROKAWA" <CQE10242@...>

環境

22 messages 2001/07/09

[#30530] Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...>

縄手@松江と言います。

17 messages 2001/07/09
[#30531] Re: Question about script on the book "Ruby nyuumon" — rubikitch <rubikitch@...> 2001/07/09

From: NAWATE Masahiko <agul@mag.shimane-u.ac.jp>

[#30533] Re: Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...> 2001/07/09

縄手@松江です。

[#30734] UML クラス図と Ruby の記述についての対応 — Ken-ichi HASHIMOTO <ken@...>

橋本@福井県在住です。

13 messages 2001/07/28

[#30764] int/int => float? — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

50 messages 2001/07/31
[#30767] Re: int/int => float? — keiju@... (石塚圭樹) 2001/07/31

けいじゅ@日本ラショナルソフトウェアです.

[#30768] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[#30770] Re: int/int => float? — Take_tk <ggb03124@...> 2001/07/31

たけ(tk)です。

[#30771] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[#30785] Re: int/int => float? — Konishi@... (Hiromasa KONISHI) 2001/07/31

 KONISHI Hiromasaです。

[ruby-list:30577] Re: open errno EALREADY triggerd

From: nobu.nakada@...
Date: 2001-07-10 08:11:17 UTC
List: ruby-list #30577
なかだです。

At Tue, 10 Jul 2001 12:22:31 +0900,
matz@ruby-lang.org (Yukihiro Matsumoto) wrote:
> で、このパッチを当てたらよいんですか?

  さて、私も確認できないのでこれで十分かどうかわからないんです
が、とりあえずEALREADYにも対処する必要はありそうな気がします。

  今EINPROGRESSのときにはwaitを入れるようになってますが、それで
も出るときは出るそうなので、やっぱり単純に0.1秒待つというだけで
は芳しくないようです。リトライしまくってみるというのも手かも知
れません。

>                             ぜんぜんわかってないヒト
>                             まつもと ゆきひろ /:|)

  かといって私がわかっているかというとそうでもないとゆー:P。


Index: socket.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/socket/socket.c,v
retrieving revision 1.45
diff -u -2 -p -r1.45 socket.c
--- socket.c	2001/06/22 15:48:59	1.45
+++ socket.c	2001/07/10 07:52:45
@@ -701,4 +701,8 @@ thread_write_select(fd)
 }
 
+#if (defined EINPROGRESS || defined EALREADY) && defined __CYGWIN__
+# define RETRY_WINSOCK
+#endif
+
 static int
 ruby_connect(fd, sockaddr, len, socks)
@@ -710,4 +714,9 @@ ruby_connect(fd, sockaddr, len, socks)
     int status;
     int mode;
+    int wait_in_progress = -1;
+#ifdef RETRY_WINSOCK
+#   define MAX_WAIT_IN_PROGRESS 100
+#   define INTERVAL_IN_PROGRESS {0, 50000}
+#endif
 
 #if defined(HAVE_FCNTL)
@@ -744,16 +753,25 @@ ruby_connect(fd, sockaddr, len, socks)
 #ifdef EINPROGRESS
 	      case EINPROGRESS:
-#if defined __CYGWIN__
+#endif
+#ifdef EALREADY
+	      case EALREADY:
+#endif
+#ifdef RETRY_WINSOCK
+		wait_in_progress = MAX_WAIT_IN_PROGRESS;
+	      retry_winsock:
 		{
-		    struct timeval tv;
-		    tv.tv_sec = 0;
-		    tv.tv_usec = 100000;
+		    struct timeval tv = INTERVAL_IN_PROGRESS;
 		    rb_thread_wait_for(tv);
 		}
 #endif
-#endif
 		thread_write_select(fd);
 		continue;
 
+#ifdef RETRY_WINSOCK
+	      case EINVAL:
+		if (--wait_in_progress > 0) goto retry_winsock;
+		break;
+#endif
+
 #ifdef EISCONN
 	      case EISCONN:


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread