diff lib/sslcommon.c @ 215:3d6e024dbf31

2003-7-7 Brian Masney <masneyb@gftp.org> * configure.in src/gtk/Makefile.am src/text/Makefile.am - if the OpenSSL libraries are available on the system, link them in and define USE_SSL. The generic SSL engine and the HTTPS protocol checks for this * lib/protocols.c (gftp_get_line) - small fix * lib/rfc2068.c - fixed several bugs in the handling of chunked messages that are spread across multiple packets (the HTTPS protocol unconvered all of these) * lib/sslcommon.c - several fixes and cleanups
author masneyb
date Tue, 08 Jul 2003 02:09:30 +0000
parents 82ebd1b05345
children 0fcc6468a0af
line wrap: on
line diff
--- a/lib/sslcommon.c	Mon Jul 07 15:15:15 2003 +0000
+++ b/lib/sslcommon.c	Tue Jul 08 02:09:30 2003 +0000
@@ -169,7 +169,7 @@
             break;
         }
     }
- 
+
   if (!ok && (subj = X509_get_subject_name (cert)) &&
       X509_NAME_get_text_by_NID (subj, NID_commonName, data, 256) > 0)
     {
@@ -249,7 +249,7 @@
 {
   int i;
 
-#ifdef G_MAJOR_VERSION == 1
+#if G_MAJOR_VERSION == 1
   /* Thread setup isn't supported in glib 1.2 yet */
   return;
 #endif
@@ -330,6 +330,7 @@
     {
       request->logging_function (gftp_logging_error, request,
                                  _("Error: SSL engine was not initialized\n"));
+      gftp_disconnect (request);
       return (GFTP_EFATAL);
     }
 
@@ -346,6 +347,7 @@
     {
       request->logging_function (gftp_logging_error, request,
                                  _("Error setting up SSL connection (BIO object)\n"));
+      gftp_disconnect (request);
       return (GFTP_EFATAL);
     }
 
@@ -355,6 +357,7 @@
     {
       request->logging_function (gftp_logging_error, request,
                                  _("Error setting up SSL connection (SSL object)\n"));
+      gftp_disconnect (request);
       return (GFTP_EFATAL);
     }
 
@@ -362,7 +365,10 @@
   SSL_set_ex_data (request->ssl, gftp_ssl_get_index (), request);
 
   if (SSL_connect (request->ssl) <= 0)
-    return (GFTP_EFATAL);
+    {
+      gftp_disconnect (request);
+      return (GFTP_EFATAL);
+    }
 
   if ((ret = gftp_ssl_post_connection_check (request)) != X509_V_OK)
     {
@@ -370,6 +376,7 @@
         request->logging_function (gftp_logging_error, request,
                                    _("Error with peer certificate: %s\n"),
                                    X509_verify_cert_error_string (ret));
+      gftp_disconnect (request);
       return (GFTP_EFATAL);
     }
 
@@ -404,19 +411,17 @@
           err = SSL_get_error (request->ssl, ret);
           if (errno == EINTR)
             {
-              if (request != NULL && request->cancel)
+              if (request->cancel)
                 break;
               else
                 continue;
              }
  
-          if (request != NULL)
-            {
-              request->logging_function (gftp_logging_error, request,
+          request->logging_function (gftp_logging_error, request,
                                    _("Error: Could not read from socket: %s\n"),
                                     g_strerror (errno));
-              gftp_disconnect (request);
-            }
+          gftp_disconnect (request);
+
           return (GFTP_ERETRYABLE);
         }
     }
@@ -458,13 +463,11 @@
                 continue;
              }
  
-          if (request != NULL)
-            {
-              request->logging_function (gftp_logging_error, request,
+          request->logging_function (gftp_logging_error, request,
                                     _("Error: Could not write to socket: %s\n"),
                                     g_strerror (errno));
-              gftp_disconnect (request);
-            }
+          gftp_disconnect (request);
+
           return (GFTP_ERETRYABLE);
         }
       ptr += w_ret;