#define RECV_FLAGS 0
+/* Common buffers for IMAP4 and POP3. */
+char tx_buffer[WMNOTIFY_BUFSIZE + 1];
+char rx_buffer[WMNOTIFY_BUFSIZE + 1];
+
+
int
SocketOpen( char *server_name, int port )
{
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 */