in reply to Query regarding connect_SSL (IO::Socket::SSL.pm)

Hello albus123,

According to the comments within the loop itself, the call to Net::SSLeay::connect may fail because:

  1. the connection failed or an unknown error occurred (in which case: the loop exits via return $self->fatal_ssl_error();)
  2. the handshake is incomplete and either the socket is non-blocking or no timeout was specified (in which case: the loop exits via return; which returns either the empty list, undef, or nothing, depending on the context in which the subroutine was called)
  3. the handshake timed out (result as in 2)
  4. the socket was not ready, either for reading or writing (in which case the timeout value is adjusted and the loop repeats via redo)

There are both read and write operations performed on the socket because the SSL handshake involves a back-and-forth exchange between the client and the server. See Transport_Layer_Security#TLS_handshake.

See redo for the loop control. I have no idea what the statements containing ${*$self} are supposed to do :-( but they are only a part of the error-handling mechanism.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Query regarding connect_SSL (IO::Socket::SSL.pm)
by albus123 (Novice) on Aug 17, 2015 at 22:21 UTC
    Thanks for the detailed response. That clarified my questions. Sincere apologies for the delayed response.