fixed ssl handler
authorpk910 <philipp@zoelle1.de>
Tue, 6 Dec 2011 23:08:40 +0000 (00:08 +0100)
committerpk910 <philipp@zoelle1.de>
Tue, 6 Dec 2011 23:19:28 +0000 (00:19 +0100)
configure.ac
src/ClientSocket.c
src/ssl.c
src/ssl.h

index 95d0bdd0afa00fcf59a1539a542d51f125f3c35e..109c5d990a20b3f95ae8e4ce6d0310240f70993e 100644 (file)
@@ -31,15 +31,20 @@ AC_ARG_WITH([winsock],
   [WINSOCK_LIBS=''])
 AC_SUBST([WINSOCK_LIBS])
 
+do_have_ssl="no";
 AC_CHECK_LIB(ssl, SSL_read, [
   AC_CHECK_LIB(crypto, X509_new, [
     AC_CHECK_HEADERS(openssl/ssl.h openssl/err.h openssl/rand.h, [
-      LIBS="$LIBS -lssl -lcrypto"
-      AC_DEFINE([HAVE_SSL], 1, [Define if you are using SSL])
+      do_have_ssl="yes";
     ])
   ])
 ])
 
+if test x"$do_have_ssl" = xyes; then
+  LIBS="$LIBS -lssl -lcrypto"
+  AC_DEFINE([HAVE_SSL], 1, [Define if you are using SSL])
+fi
+
 # Checks for header files.
 AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h windows.h winsock2.h])
 
index 6b32b17e33b2393f31ebcb9b2557bbffa28b4ae3..898b05fb2a9dc3a0ac27f0597f62e0cb85f39493 100644 (file)
@@ -278,7 +278,7 @@ void socket_loop(int timeout_seconds) {
                     sock->bufferpos += i;
                 }
             } else {
-                if(!(sock->flags & SOCKET_FLAG_SSL) || (bytes = ssl_read(sock, buffer, sizeof(buffer))) == -2) {
+                if(!(sock->flags & SOCKET_FLAG_SSL) || (bytes = ssl_read(sock, sock->buffer, sizeof(sock->buffer))) == -2) {
                     #ifdef WIN32
                     bytes = recv(sock->sock, sock->buffer, sizeof(sock->buffer), 0);
                     #else
index 0c16548a742c46ced208e010e75e67c2bb242999..a2c837b1e942cd90460b9d4af958097452c007c0 100644 (file)
--- a/src/ssl.c
+++ b/src/ssl.c
@@ -21,6 +21,7 @@
 void ssl_init() {
 #ifdef HAVE_SSL
     SSL_library_init();
+    SSL_load_error_strings();
 #endif
 }
 
@@ -36,6 +37,7 @@ void ssl_connect(struct ClientSocket *client) {
     if(!SSL_set_fd(sslconn->sslHandle, client->sock)) goto ssl_connect_err;
     if(SSL_connect(sslconn->sslHandle) != 1) goto ssl_connect_err;
     client->sslconn = sslconn;
+    return;
 ssl_connect_err:
     free(sslconn);
 #endif    
index d28937b948966ec8e63ba287365d38993279c6f5..6fd3144c8c71e1433359f15992724312c0f013b0 100644 (file)
--- a/src/ssl.h
+++ b/src/ssl.h
@@ -24,6 +24,7 @@ struct ClientSocket;
 #ifdef HAVE_SSL
 #include <openssl/rand.h>
 #include <openssl/ssl.h>
+#include <openssl/err.h>
 
 struct SSLConnection {
     SSL *sslHandle;