Mercurial > urweb
view tests/goodbye.ur @ 2297:6d56080f495c
Fix a read-after-free bug using a timestamp check
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 19 Nov 2015 13:18:58 -0500 |
parents | c05e2e4bdde7 |
children |
line wrap: on
line source
table boo : { Client : client, Channel : channel unit } fun doIt () = me <- self; ch <- channel; dml (INSERT INTO boo (Client, Channel) VALUES ({[me]}, {[ch]})); return <xml><body onload={let fun loop () = v <- recv ch; alert "Someone left"; loop () in loop () end}/></xml> task clientLeaves = fn cl => debug "Client left"; dml (DELETE FROM boo WHERE Client = {[cl]}); queryI (SELECT (boo.Channel) FROM boo) (fn r => send r.1 ()); debug "Done processing" fun main () = return <xml><body> <form> <submit action={doIt}/> </form> </body></xml>