hostinfo = gethostbyname(server_name);
if( hostinfo == NULL ) {
- perror( PACKAGE );
+ herror( PACKAGE );
ErrorLocation( __FILE__, __LINE__ );
goto error;
}
#if HAVE_SSL
if( wmnotify_infos.use_ssl == TRUE ) {
len = SSL_read( ssl_infos.ssl, buffer, max_size ); /* Get reply & decrypt */
- if( len <= 0 ) {
- SSL_get_error( ssl_infos.ssl, len );
- len = -1;
+ switch( SSL_get_error( ssl_infos.ssl, len ) ) {
+ case SSL_ERROR_NONE:
+ /* Success. */
+ break;
+ case SSL_ERROR_ZERO_RETURN:
+ fprintf( stderr, "%s: SSL_read() connection closed.\n", PACKAGE );
+ break;
+ case SSL_ERROR_SYSCALL:
+ fprintf( stderr, "%s: SSL_read() I/O error.\n", PACKAGE );
+ goto ssl_error;
+ case SSL_ERROR_SSL:
+ fprintf( stderr, "%s: SSL_read() protocol error.\n", PACKAGE );
+ goto ssl_error;
+ default:
+ fprintf( stderr, "%s: SSL_read() error.\n", PACKAGE );
+ goto ssl_error;
}
-
+
return len;
+
+ ssl_error:
+ return -1;
}
#endif /* HAVE_SSL */