… | |
… | |
767 | ) { |
767 | ) { |
768 | $self->_error (&Errno::ENOSPC, 1), return; |
768 | $self->_error (&Errno::ENOSPC, 1), return; |
769 | } |
769 | } |
770 | |
770 | |
771 | while () { |
771 | while () { |
|
|
772 | $self->{rbuf} .= delete $self->{tls_rbuf} if exists $self->{tls_rbuf};#d# |
|
|
773 | |
772 | my $len = length $self->{rbuf}; |
774 | my $len = length $self->{rbuf}; |
773 | |
775 | |
774 | if (my $cb = shift @{ $self->{_queue} }) { |
776 | if (my $cb = shift @{ $self->{_queue} }) { |
775 | unless ($cb->($self)) { |
777 | unless ($cb->($self)) { |
776 | if ($self->{_eof}) { |
778 | if ($self->{_eof}) { |
… | |
… | |
1188 | |
1190 | |
1189 | $self->{rbuf} = $json->incr_text; |
1191 | $self->{rbuf} = $json->incr_text; |
1190 | $json->incr_text = ""; |
1192 | $json->incr_text = ""; |
1191 | |
1193 | |
1192 | $self->_error (&Errno::EBADMSG); |
1194 | $self->_error (&Errno::EBADMSG); |
|
|
1195 | |
1193 | () |
1196 | () |
1194 | |
|
|
1195 | } else { |
1197 | } else { |
1196 | $self->{rbuf} = ""; |
1198 | $self->{rbuf} = ""; |
|
|
1199 | |
1197 | () |
1200 | () |
1198 | } |
1201 | } |
1199 | } |
1202 | } |
1200 | }; |
1203 | }; |
1201 | |
1204 | |
… | |
… | |
1342 | delete $self->{_rw}; |
1345 | delete $self->{_rw}; |
1343 | $self->{_eof} = 1; |
1346 | $self->{_eof} = 1; |
1344 | &_freetls; |
1347 | &_freetls; |
1345 | } |
1348 | } |
1346 | |
1349 | |
1347 | $self->{rbuf} .= $tmp; |
1350 | $self->{tls_rbuf} .= $tmp;#d# |
1348 | $self->_drain_rbuf unless $self->{_in_drain}; |
1351 | $self->_drain_rbuf unless $self->{_in_drain}; |
1349 | $self->{tls} or return; # tls session might have gone away in callback |
1352 | $self->{tls} or return; # tls session might have gone away in callback |
1350 | } |
1353 | } |
1351 | |
1354 | |
1352 | $tmp = Net::SSLeay::get_error ($self->{tls}, -1); |
1355 | $tmp = Net::SSLeay::get_error ($self->{tls}, -1); |