Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: SIGPIPE not trapped after sleep in CGI

by zwon (Abbot)
on Oct 28, 2012 at 13:37 UTC ( #1001267=note: print w/replies, xml ) Need Help??

in reply to SIGPIPE not trapped after sleep in CGI

Try to add following two lines after print "output #2\n";:

sleep 5; print "output #3\n";
and you will get your SIGPIPE.


So after you printed "output #1" you hit abort in browser, browser sent "FIN" to server, that means that it will not send any data to server, server considers connection open write only after that. Then you print "output #2", server sends it to browser as it thinks connection is still open for writing, no error here and no SIGPIPE. Client receives this "output #2" and replies with "RST" as it considers connection completely closed. After server got "RST" it realise that connection is closed, now if you try to write anything into socket, you will get SIGPIPE.