Blob Blame History Raw
diff --git a/rhn/SSL.py b/rhn/SSL.py
index db26fd8541..c3d338868f 100644
--- a/rhn/SSL.py
+++ b/rhn/SSL.py
@@ -28,6 +28,7 @@ from OpenSSL import SSL
 # SSL.crypto is provided to other modules
 from OpenSSL import crypto
 import os
+import sys
 
 import socket
 import select
@@ -134,7 +135,19 @@ class SSLSocket:
         self._makefile_called = self._makefile_called - 1
 
     def _really_close(self):
-        self._connection.shutdown()
+        # No connection was established
+        if self._connection is None:
+            return
+
+        # for Python 3
+        if sys.version_info[0] == 3:
+            if self._connection.get_state_string() == b'SSL negotiation finished successfully':
+                self._connection.shutdown()
+        # for Python 2
+        else:
+            if self._connection.state_string() == 'SSL negotiation finished successfully':
+                self._connection.shutdown()
+
         self._connection.close()
         self._closed = 1
 
diff --git a/rhnlib.spec b/rhnlib.spec
index 2de48689f4..57e2128001 100644
--- a/rhnlib.spec
+++ b/rhnlib.spec
@@ -5,7 +5,7 @@ Name: rhnlib
 URL:     https://fedorahosted.org/spacewalk
 Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
 Version: 2.5.65
-Release: 4%{?dist}
+Release: 5%{?dist}
 
 Group: Development/Libraries
 License: GPLv2
@@ -59,6 +59,10 @@ rm -rf $RPM_BUILD_ROOT
 %{python_sitelib}/*
 
 %changelog
+* Thu Sep 21 2017 Tomas Kasparek <tkasparek@redhat.com> 2.5.65-5
+- Resolves: #1471045 - check a state of handshake before shutdown SSL
+  connection (grinrag@gmail.com)
+
 * Mon Mar 06 2017 Gennadii Altukhov <galt@redhat.com> 2.5.65-4
 - Resolves: #1409577 - fixed BZ ID in changelog (galt@redhat.com)