50 |
my $new = $lsn->accept; |
my $new = $lsn->accept; |
51 |
$sel->add($new); |
$sel->add($new); |
52 |
$session->{$new} = $new->peerhost; |
$session->{$new} = $new->peerhost; |
53 |
warn "[socket] connect from ", $new->peerhost, "\n"; |
warn "[socket] connect\n"; |
54 |
Storable::store_fd( { ping => 1 }, $new ); |
Storable::store_fd( { ping => 1 }, $new ); |
55 |
} else { |
} else { |
56 |
if ( $sock->connected ) { |
my $data = eval { Storable::fd_retrieve( $sock ) }; |
57 |
my $data = Storable::fd_retrieve( $sock ); |
if ( $@ ) { |
|
warn "<<<< ", dump($data), $/; |
|
|
} else { |
|
|
$session->{$sock}->close(); |
|
58 |
delete $session->{$sock}; |
delete $session->{$sock}; |
59 |
warn "[socket] disconnect\n"; |
warn "[socket] disconnect: $@\n"; |
60 |
$sel->remove($sock); |
$sel->remove($sock); |
61 |
$sock->close; |
$sock->close; |
62 |
|
} else { |
63 |
|
warn "<<<< ", dump($data), $/; |
64 |
|
if ( $data->{repl} ) { |
65 |
|
Storable::store_fd( { repl => $data }, $sock ); |
66 |
|
} |
67 |
} |
} |
68 |
} |
} |
69 |
} |
} |