X-Git-Url: http://git.rot13.org/?p=perl-Redis.git;a=blobdiff_plain;f=lib%2FRedis.pm;h=3ac761943306ec4766795a7a3fd6cb030f34d92e;hp=af9048a50dc3cb80f6cfc05e9fa1c48f9d3eabe4;hb=62521c905dd00690390d2080aad38dff1e3b925c;hpb=7b06790912537232a106266ab3777d548f86cfd3 diff --git a/lib/Redis.pm b/lib/Redis.pm index af9048a..3ac7619 100644 --- a/lib/Redis.pm +++ b/lib/Redis.pm @@ -63,8 +63,10 @@ sub _sock_read_bulk { warn "## bulk len: ",dump($len); return undef if $len eq "nil\r\n"; my $v; - read($sock, $v, $len) || die $!; - warn "## bulk v: ",dump($v); + if ( $len > 0 ) { + read($sock, $v, $len) || die $!; + warn "## bulk v: ",dump($v); + } my $crlf; read($sock, $crlf, 2); # skip cr/lf return $v; @@ -79,6 +81,7 @@ sub _sock_result_bulk { sub __sock_ok { my $ok = <$sock>; + return undef if $ok eq "nil\r\n"; confess dump($ok) unless $ok eq "+OK\r\n"; } @@ -100,7 +103,8 @@ sub __sock_send_bulk_raw { my $self = shift; warn "## _sock_send_bulk ",dump( @_ ); my $value = pop; - print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n"; + $value = '' unless defined $value; # FIXME errr? nil? + print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n" } sub _sock_send_bulk {