On Jan 30, 2012, at 3:01 PM, Ricardo Pedroso wrote:

> On Sun, Jan 29, 2012 at 5:28 PM, Ricardo Pedroso <rmdpedr...@gmail.com> wrote:
>> On Sun, Jan 29, 2012 at 4:27 PM, Massimo Di Pierro
>> <massimo.dipie...@gmail.com> wrote:
>> 
>>> I used to be able to stop the server with CRTL+C but it does not work
>>> anymore on my mac. I now have to kill it. Why?
>> 
>> I'm new to web2py, but I already see this happened
>> in other scripts when working with sockets and threads.
> 
> I've been analyzing this issue and I think I've found the problem
> I think the problem could be with HTTP/1.1 keep_alive feature.
> 
> How to test:
> 1. In a console start web2py:
> $ ./web2py
> 
> 2. In other console start a telnet connection to web2py:
> $ telnet 127.0.0.1 8000
> GET / HTTP/1.1<CR>
> Host: 127.0.0.1:8000<CR>
> Connection: keep-alive<CR>
> <CR>
> 
> After this last <CR>, telnet session doesn't quit.
> 
> Now in the other console stop web2py with CTRL-C
> it will hand, but if you kill the telnet web2py quit immediately.
> 
> 
> This test can be done with a browser also:
> Just run one and only one browser instance and goto http://127.0.0.1:8000
> Then CTRL-C web2py, it will hang
> Close your browser and web2py quits immediately
> 
> web2py after some time eventually quits, the socket will timeout, I'm not
> sure but this timeout is the default from the OS.
> 
> web2py is hanging in the thread join in rocket.py around line 1066 in
> the stop method.
> 
> This was not easy for me to explain but I hope that I gave some more
> leads to this issue.

Good work; thanks!

Maybe Tim can take a look?

Reply via email to