… | |
… | |
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# |
772 | $self->{rbuf} .= delete $self->{_tls_rbuf} if exists $self->{_tls_rbuf}; |
773 | |
773 | |
774 | my $len = length $self->{rbuf}; |
774 | my $len = length $self->{rbuf}; |
775 | |
775 | |
776 | if (my $cb = shift @{ $self->{_queue} }) { |
776 | if (my $cb = shift @{ $self->{_queue} }) { |
777 | unless ($cb->($self)) { |
777 | unless ($cb->($self)) { |
… | |
… | |
1345 | delete $self->{_rw}; |
1345 | delete $self->{_rw}; |
1346 | $self->{_eof} = 1; |
1346 | $self->{_eof} = 1; |
1347 | &_freetls; |
1347 | &_freetls; |
1348 | } |
1348 | } |
1349 | |
1349 | |
1350 | $self->{tls_rbuf} .= $tmp;#d# |
1350 | $self->{_tls_rbuf} .= $tmp; |
1351 | $self->_drain_rbuf unless $self->{_in_drain}; |
1351 | $self->_drain_rbuf unless $self->{_in_drain}; |
1352 | $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 |
1353 | } |
1353 | } |
1354 | |
1354 | |
1355 | $tmp = Net::SSLeay::get_error ($self->{tls}, -1); |
1355 | $tmp = Net::SSLeay::get_error ($self->{tls}, -1); |
1356 | |
1356 | |
1357 | if ($tmp != Net::SSLeay::ERROR_WANT_READ ()) { |
1357 | if ($tmp != Net::SSLeay::ERROR_WANT_READ ()) { |
1358 | if ($tmp == Net::SSLeay::ERROR_SYSCALL ()) { |
1358 | if ($tmp == Net::SSLeay::ERROR_SYSCALL ()) { |
1359 | return $self->_error ($!, 1); |
1359 | return $self->_error ($!, 1); |
1360 | } elsif ($tmp == Net::SSLeay::ERROR_SSL ()) { |
1360 | } elsif ($tmp == Net::SSLeay::ERROR_SSL ()) { |
1361 | return $self->_error (&Errno::EIO, 1); |
1361 | return $self->_error (&Errno::EIO, 1); |
1362 | } |
1362 | } |
1363 | |
1363 | |
1364 | # all other errors are fine for our purposes |
1364 | # all other errors are fine for our purposes |
1365 | } |
1365 | } |