setsockopt

net/httpsHTTPSな通信をしていたのですが、IEのようにリンクをClickしたとたんにCtrl-wで落としたらRSTを出すような状況を作り出したいことになりました。CGIにスリープとかさせて、そのあいだにread_timeout=1とかやってセッションTimeout起こさせたのですが、そこはruby行儀よくFINだします。setsockoptでSO_LINGERをセットしたい!!!さてSocketはどこにあるのでしょうか?

無理やり探し出してこんな感じでセットしてみた。

class Net::HTTP
  def setlinger
    optval = [1,0].pack("ii")
    @socket.io.io.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER,optval)
  end
end

どうやらRSTでたようだ。