--- trunk/experiments/protocol-v3/server.pl 2009/11/01 21:00:30 164 +++ trunk/experiments/protocol-v3/server.pl 2009/11/01 21:03:26 165 @@ -53,17 +53,17 @@ warn "[socket] connect\n"; Storable::store_fd( { ping => 1 }, $new ); } else { - if ( $sock->connected ) { - my $data = Storable::fd_retrieve( $sock ); + my $data = eval { Storable::fd_retrieve( $sock ) }; + if ( $@ ) { + delete $session->{$sock}; + warn "[socket] disconnect: $@\n"; + $sel->remove($sock); + $sock->close; + } else { warn "<<<< ", dump($data), $/; if ( $data->{repl} ) { Storable::store_fd( { repl => $data }, $sock ); } - } else { - delete $session->{$sock}; - warn "[socket] disconnect\n"; - $sel->remove($sock); - $sock->close; } } }