sub _sslproxy_done { my($self, $response, $callback) = @_; # We expect here "200 Connection established" unless($response->is_success) { $logger->log(WARN, "Proxy request failed: ", $response->status_line); return; } $logger->log(DEBUG, "Proxy CONNECTed: sock=", $self->{proxy_requestor}->sock, " fileno=", fileno($self->{proxy_requestor}->sock)); $self->{sslsock} = $self->{proxy_requestor}->sock; unless(IO::Socket::SSL->start_SSL($self->{sslsock}, SSL_startHandshake => 0)) { $logger->log(DEBUG, "start_SSL returns false"); return; } for(;;) { # Later do asynchronously! $logger->log(DEBUG, "connect_SSL..."); $self->{sslsock}->connect_SSL && last; $logger->log(DEBUG, "connect_SSL: $SSL_ERROR"); } $logger->log(DEBUG, "_sslproxy_done() sslsock=", $self->{sslsock}, " opened=", $self->{sslsock} && $self->{sslsock}->opened); goto &$callback if($self->{sslsock}); $logger->log(WARN, "start_SSL error: ", IO::Socket::SSL::errstr() || "Unknown"); }