[#7785] rb2c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 1999/09/02

[#7845] [Q] irb and SizedQueue — keiju@... (Keiju ISHITSUKA)

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

14 messages 1999/09/15

[ruby-dev:7822] Re: http-access-0.0.2 patch

From: "NAKAMURA, Hiroshi" <nakahiro@...>
Date: 1999-09-08 05:52:49 UTC
List: ruby-dev #7822
なひです.

> From: msr [mailto:msr@remus.dti.ne.jp]
> Sent: Tuesday, September 07, 1999 11:45 PM

> あと http-access.rb に関して質問があります。get_data で データを読み込
> んでいる時 eof? で例外が出るときがあるのですが、これはどのように対処す
> るのがよろしいのでしょうか。調べたところ
> 
>     @readbuf が nil の場合 @readbuf.length で例外が出る
>     @socketが既にcloseされているときに @socket.closed? をみて例外がでる
> 
> のが原因のようです。

前者の方は,@readbufの初期状態の扱いの問題みたいですね.
nilじゃなくて''を使うようにすればOKだと思います.

後者については,テストスートの最後,get_dataをwhileで回すところで,
HTTP/1.0接続している時に出てるみたいです.最後まで読んだところで既に
接続が切れているので,eof?のところにclosed?を追加すればいいと思います.
HTTP/1.1でpersistent connectionが続いている場合は問題なし.

> というわけで 中身をまったく理解してない上での変更なのでまったく自信はないですが

これでOKだと思います.以下,基本的に同じ内容なんですが,
一応@readbufの初期値も変更してみました.
ついでにテストスートでのproxy指定も,
引数から取るようにしました(本体には関係なし).
高橋征義さんPatchをあてたもの,へのpatchです.

--- http-access.rb.p1	Wed Sep  8 13:40:43 1999
+++ http-access.rb	Wed Sep  8 14:43:48 1999
@@ -194,3 +194,3 @@
     else
-      @socket.eof?
+      @socket.closed? or @socket.eof?
     end
@@ -259,5 +259,5 @@
     else
-      if @readbuf
+      if @readbuf.length > 0
 	data = @readbuf
-	@readbuf = nil
+	@readbuf = ''
 	return data
@@ -292,5 +292,3 @@
   url = URL.new(urlstr)
-  #exit
-
-  proxy = 'http://proxy.some.where.jp:8080/'
+  proxy = ARGV.shift

In This Thread