---  Yohanes Santoso wrote:

> Funny, I do not observe that behaviour:

On my XP system here, with:
WEBrick 1.3.1
ruby 1.8.2 (2004-06-29) [i386-mswin32]


I get the following from your script (slightly modified; i'll post below
for completeness) from three requests started as close to the same time as
I could manage:

Req1:
Start: Tue Aug 31 14:50:30 Eastern Daylight Time
2004
End: Tue Aug 31 14:50:40 Eastern Daylight Time 2004

Req2:
Start:
Tue Aug 31 14:50:40 Eastern Daylight Time 2004
End: Tue Aug 31 14:50:50 Eastern
Daylight Time 2004

Req3:
Start: Tue Aug 31 14:50:50 Eastern Daylight Time
2004
End: Tue Aug 31 14:51:00 Eastern Daylight Time 2004

Looks like they're
blocking each other pretty perfectly, eh?  :)  I've also added output of the
server's :MaxClients just to be sure... but it returns "100", as it should
by default.  

Any Ideas?  I'll post the script below just to ensure I didn't
break anything in making it run...

-Ryan

PS - Sorry about the poor formatting
on my emails, I'm reading the list through Bloglines lately... maybe I should
switch back to receiving all the messages...

require 'webrick'
include
WEBrick

class SleepServer < HTTPServlet::AbstractServlet
  def do_GET(req,resp)

    resp.body="Start: #{Time.new}\n"
    sleep(10)
    resp.body << "End:
#{Time.new}\n"
    resp['content-type'] = 'text/plain'
  end
end

class
GreetServer < HTTPServlet::AbstractServlet
  def do_GET(req, resp)
    resp.body="Hi,
now is: #{Time.new}\n"
    resp['content-type']='text/plain'
  end
end


default_port = (12301 + (Dir.pwd.hash % 1000)).to_s

$port = (ARGV[0]
|| default_port).to_i
puts "URL: http://#{Socket.gethostname}:#$port"

$s = HTTPServer.new(
  :Port            => $port,
  :DocumentRoot    =>
Dir::pwd
)

p $s[:MaxClients]

$s.mount('/sleep', SleepServer)
$s.mount('/greet',
GreetServer)
trap("INT"){ $s.shutdown }
$s.start