ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Handle.pm (file contents):
Revision 1.238 by root, Tue Dec 10 15:54:51 2013 UTC vs.
Revision 1.239 by root, Tue Dec 10 20:39:12 2013 UTC

2063sub _dotls { 2063sub _dotls {
2064 my ($self) = @_; 2064 my ($self) = @_;
2065 2065
2066 my $tmp; 2066 my $tmp;
2067 2067
2068 if (length $self->{_tls_wbuf}) { 2068 while (length $self->{_tls_wbuf}) {
2069 while (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) > 0) { 2069 if (($tmp = Net::SSLeay::write ($self->{tls}, $self->{_tls_wbuf})) <= 0) {
2070 substr $self->{_tls_wbuf}, 0, $tmp, ""; 2070 $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp);
2071
2072 return $self->_tls_error ($tmp)
2073 if $tmp != $ERROR_WANT_READ
2074 && ($tmp != $ERROR_SYSCALL || $!);
2075
2076 last;
2071 } 2077 }
2072 2078
2073 $tmp = Net::SSLeay::get_error ($self->{tls}, $tmp); 2079 substr $self->{_tls_wbuf}, 0, $tmp, "";
2074 return $self->_tls_error ($tmp)
2075 if $tmp != $ERROR_WANT_READ
2076 && ($tmp != $ERROR_SYSCALL || $!);
2077 } 2080 }
2078 2081
2079 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) { 2082 while (defined ($tmp = Net::SSLeay::read ($self->{tls}))) {
2080 unless (length $tmp) { 2083 unless (length $tmp) {
2081 $self->{_on_starttls} 2084 $self->{_on_starttls}
2095 $self->{_tls_rbuf} .= $tmp; 2098 $self->{_tls_rbuf} .= $tmp;
2096 $self->_drain_rbuf; 2099 $self->_drain_rbuf;
2097 $self->{tls} or return; # tls session might have gone away in callback 2100 $self->{tls} or return; # tls session might have gone away in callback
2098 } 2101 }
2099 2102
2100 $tmp = Net::SSLeay::get_error ($self->{tls}, -1); 2103 $tmp = Net::SSLeay::get_error ($self->{tls}, -1); # -1 is not neccessarily correct, but Net::SSLeay doesn't tell us
2101 return $self->_tls_error ($tmp) 2104 return $self->_tls_error ($tmp)
2102 if $tmp != $ERROR_WANT_READ 2105 if $tmp != $ERROR_WANT_READ
2103 && ($tmp != $ERROR_SYSCALL || $!); 2106 && ($tmp != $ERROR_SYSCALL || $!);
2104 2107
2105 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) { 2108 while (length ($tmp = Net::SSLeay::BIO_read ($self->{_wbio}))) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines