diff options
author | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2015-10-28 21:27:39 +0100 |
---|---|---|
committer | Spamd Stats <spamd-stats@vm-mail.spline.inf.fu-berlin.de> | 2015-10-28 21:27:39 +0100 |
commit | 403b8cb313a2122fee8a490a99be9aef9038a74e (patch) | |
tree | 84ad5c6383bb9f6437bae44d5da412ff1c7a8e8c | |
parent | 0fa4381419fcc88addbdf2e023c0f136c5fe195b (diff) | |
download | spamd-stats-403b8cb313a2122fee8a490a99be9aef9038a74e.tar.gz spamd-stats-403b8cb313a2122fee8a490a99be9aef9038a74e.tar.bz2 spamd-stats-403b8cb313a2122fee8a490a99be9aef9038a74e.zip |
We need to buffer the incomming data and process is at whole if we receive
an EOF. Storabel::freeze can produce multiple lines.
-rwxr-xr-x | stats.pl | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -25,21 +25,20 @@ sub my_die { tcp_connect "unix/", $socket, sub { my ($fh) = @_ or my_die("Unable to connect to socket: $!");; + my $data; my $h; $h = new AnyEvent::Handle fh => $fh, on_eof => sub { - $h->destroy; - my_die('Connection closed.'); + # read stats data + my $stats = Storable::thaw($data); + + print "OK | ham=$stats->{ham};;;0 spam=$stats->{spam};;;0 block=$stats->{block};;;0\n"; + $cv->send; }, on_read => sub { $h->push_read(line => sub { my ($h, $line) = @_; - - # read stats data - my $stats = Storable::thaw($line); - - print "OK | ham=$stats->{ham};;;0 spam=$stats->{spam};;;0 block=$stats->{block};;;0\n"; - $cv->send; + $data .= "$line\n"; }); }; }; |