なひです.

Meeting2000-0.92b1で,一応acceptのEPROTOとwrite syscallのSIGPIPEを
保護してみました.

acceptの方については「Errno::EPROTO」なんて捕まえ方で
良かったんでしょうか.RubyのErrorクラスの解説を見つけられませんでした.
ぴかちう本(やめなさい)待ちでしたっけ? (^_^;

ただ,厳格な(?)だえもんを作ろうとするともっとあちこち面倒ですし,
「正しく(?)例外が上がってるんだから」ということで
acceptのEPROTOは無視してもいいのかもしれません.

SIGPIPEの方は,ほっとくと / application.commitを通らないので,
溜めたデータがリセットされちゃいますよね...

適当な修正ですので,メッセージ統一とかログファイル対応準備?
とかしたほうがいいのかもしれません.(^_^;

--- HttpServer.rb.orig	Wed Feb 24 22:53:09 1999
+++ HttpServer.rb	Fri Feb 26 12:50:21 1999
@@ -8,7 +8,12 @@
       serverSocket = TCPserver.open(port)
       
       while TRUE
-	socket = serverSocket.accept
+	begin
+	  socket = serverSocket.accept
+	rescue Errno::EPROTO
+	  p 'Rescued ' + $! + '. Continue...'
+	  next
+	end
 	Thread.start { readProcess(socket) }
       end
     ensure
@@ -108,7 +113,12 @@
 	header += k + ": " + v + "\r\n"
       }
 
+      trap( 'SIGPIPE' ) {
+	p 'SIGPIPE received. Client might be close this session. Continue...'
+      }
       socket.write(header + "\r\n" + content)
+      trap( 'SIGPIPE', 'DEFAULT' )
+
       socket.close
 
     rescue