summary refs log tree commit diff
path: root/gnu/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch
blob: f2166aebfdfdf5b751150840b1d64417bf91b483 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Work around a problem arising from the update to OpenSSL 1.0.2f, based on the
following upstream commit:

  https://github.com/noxxi/p5-io-socket-ssl/commit/6e23ee4a433f83f1065bd2467255eba5ee9b1ddd

Attempting to update to IO-Socket-SSL-2.023, which includes this commit,
caused other test failures.  See:

  https://lists.gnu.org/archive/html/guix-devel/2016-01/msg01032.html

Description from the upstream commit:

  OpenSSL 1.0.2f changed the behavior of SSL shutdown in case the TLS connection
  was not fully established (commit: f73c737c7ac908c5d6407c419769123392a3b0a9).
  This somehow resulted in Net::SSLeay::shutdown returning 0 (i.e. keep trying)
  which caused an endless loop. It will now ignore this result in case the TLS
  connection was not yet established and consider the TLS connection closed
  instead.

--- IO-Socket-SSL-2.002/lib/IO/Socket/SSL.pm.orig	2014-10-21 16:51:16.000000000 -0400
+++ IO-Socket-SSL-2.002/lib/IO/Socket/SSL.pm	2016-01-31 15:07:14.971099894 -0500
@@ -1213,6 +1213,11 @@
 		    # shutdown complete
 		    last;
 		}
+		if ((${*$self}{'_SSL_opened'}||0) <= 0) {
+		    # not really open, thus don't expect shutdown to return
+		    # something meaningful
+		    last;
+		}
 
 		# initiate or complete shutdown
 		local $SIG{PIPE} = 'IGNORE';