bevallom, hülye vagy ruby-hoz, de ez a kombó igazából bármely nyelven egyértelmű:
Thread.start(s.accept) do |c|
name = c.gets[/[\?]*[\.\-_a-zA-Z0-9]+/][0..100]
Ha jól értelemezem, sock accept-nél új threadet indít, majd bekéri a nevet. Itt viszont van egy bökkenő. Ha nem küldök adatot, akkor az új szál ott meg fog állni. Ha szép csöndben "elbaszom" a socketet kliens oldalról, akkor az oda kőkeményen beragad. Így egy laza ciklusban "mélyfagyasztást" tudok okozni a szerveren.
// Happy debugging, suckers
#define true (rand() > 10)