View | Details | Raw Unified | Return to bug 216133
Collapse All | Expand All

(-)files/patch-http-ssl (+167 lines)
Line 0 Link Here
1
diff -u ../HTTP-Daemon-SSL-1.04/Changes ./Changes
2
--- ../HTTP-Daemon-SSL-1.04/Changes	2008-02-12 02:27:03.000000000 +0100
3
+++ ./Changes	2009-12-09 12:51:02.000000000 +0100
4
@@ -1,3 +1,14 @@
5
+v1.05_01
6
+    - dev release
7
+    - re-introducing _need_more to work around issue in base LWP
8
+      http://rt.cpan.org/Ticket/Display.html?id=45625
9
+    - will need further testing on the two bugs below which were
10
+      resolved by removing it (or hopefully the base issue will
11
+      be resolved)
12
+    - also resolved:
13
+      http://rt.cpan.org/Ticket/Display.html?id=46038
14
+      http://rt.cpan.org/Ticket/Display.html?id=45153
15
+
16
 v1.04
17
     - production release
18
     - only documentation and text file changes from 1.03_02
19
diff -u ../HTTP-Daemon-SSL-1.04/MANIFEST ./MANIFEST
20
--- ../HTTP-Daemon-SSL-1.04/MANIFEST	2008-02-12 02:27:03.000000000 +0100
21
+++ ./MANIFEST	2009-12-09 12:52:11.000000000 +0100
22
@@ -5,9 +5,15 @@
23
 Changes
24
 Makefile.PL
25
 MANIFEST
26
+MANIFEST.SKIP
27
+META.yml			Module meta-data (added by MakeMaker)
28
 README
29
 SSL.pm
30
 t/loadmodule.t
31
-t/testmodule.t
32
+t/pod.t
33
+t/post.t
34
+t/post500k
35
+t/post66k
36
+t/post67k
37
 t/ssl_settings.req
38
-META.yml                                 Module meta-data (added by MakeMaker)
39
+t/testmodule.t
40
Only in .: MANIFEST.SKIP
41
diff -u ../HTTP-Daemon-SSL-1.04/META.yml ./META.yml
42
--- ../HTTP-Daemon-SSL-1.04/META.yml	2008-02-12 02:27:03.000000000 +0100
43
+++ ./META.yml	2009-12-09 12:58:24.000000000 +0100
44
@@ -1,12 +1,23 @@
45
-# http://module-build.sourceforge.net/META-spec.html
46
-name:         HTTP-Daemon-SSL
47
-version:      1.04
48
-version_from: SSL.pm
49
-installdirs:  site
50
-license:      perl
51
+--- #YAML:1.0
52
+name:               HTTP-Daemon-SSL
53
+version:            1.05_01
54
+abstract:           ~
55
+author:  []
56
+license:            unknown
57
+distribution_type:  module
58
+configure_requires:
59
+    ExtUtils::MakeMaker:  0
60
+build_requires:
61
+    ExtUtils::MakeMaker:  0
62
 requires:
63
-    HTTP::Daemon:                  1
64
-    IO::Socket::SSL:               0.93
65
-
66
-distribution_type: module
67
-generated_by: ExtUtils::MakeMaker version 6.17
68
+    HTTP::Daemon:     1
69
+    IO::Socket::SSL:  0.93
70
+    Test::More:       0
71
+no_index:
72
+    directory:
73
+        - t
74
+        - inc
75
+generated_by:       ExtUtils::MakeMaker version 6.55_02
76
+meta-spec:
77
+    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
78
+    version:  1.4
79
diff -u ../HTTP-Daemon-SSL-1.04/Makefile.PL ./Makefile.PL
80
--- ../HTTP-Daemon-SSL-1.04/Makefile.PL	2008-02-12 02:27:03.000000000 +0100
81
+++ ./Makefile.PL	2009-12-09 10:59:28.000000000 +0100
82
@@ -9,6 +9,10 @@
83
   'NAME'	=> 'HTTP::Daemon::SSL',
84
   'VERSION_FROM' => 'SSL.pm',
85
   'DISTNAME' => 'HTTP-Daemon-SSL',
86
-  'PREREQ_PM' => { 'HTTP::Daemon' => 1.0, 'IO::Socket::SSL' => 0.93 },
87
+  'PREREQ_PM' => {
88
+      'HTTP::Daemon' => 1.0,
89
+      'IO::Socket::SSL' => 0.93,
90
+      'Test::More' => 0,
91
+     },
92
   'dist' => { COMPRESS => 'gzip', SUFFIX => 'gz', },
93
 );
94
diff -u ../HTTP-Daemon-SSL-1.04/SSL.pm ./SSL.pm
95
--- ../HTTP-Daemon-SSL-1.04/SSL.pm	2008-02-12 02:27:03.000000000 +0100
96
+++ ./SSL.pm	2009-12-09 12:51:38.000000000 +0100
97
@@ -72,7 +72,7 @@
98
 use IO::Socket::SSL;
99
 use HTTP::Daemon;
100
 
101
-$VERSION = "1.04";
102
+$VERSION = "1.05_01";
103
 @ISA = qw(IO::Socket::SSL HTTP::Daemon);
104
 
105
 =item $d = new HTTP::Daemon::SSL
106
@@ -160,6 +160,44 @@
107
 @ISA = qw(IO::Socket::SSL HTTP::Daemon::ClientConn);
108
 *DEBUG = \$HTTP::Daemon::DEBUG;
109
 
110
+sub _need_more
111
+{
112
+    my $self = shift;
113
+    if ($_[1]) {
114
+        my($timeout, $fdset) = @_[1,2];
115
+        print STDERR "select(,,,$timeout)\n" if $DEBUG;
116
+        my $n = select($fdset,undef,undef,$timeout);
117
+        unless ($n) {
118
+            $self->reason(defined($n) ? "Timeout" : "select: $!");
119
+            return;
120
+        }
121
+    }
122
+    my $total = 0;
123
+    while (1){
124
+        print STDERR sprintf("sysread() already %d\n",$total) if $DEBUG;
125
+        my $n = sysread($self, $_[0], 2048, length($_[0]));
126
+        print STDERR sprintf("sysread() just \$n=%s\n",(defined $n?$n:'undef')) if $DEBUG;
127
+        $total += $n if defined $n;
128
+        last if $! =~ 'Resource temporarily unavailable';
129
+            #SSL_Error because of aggressive reading
130
+ 
131
+        $self->reason(defined($n) ? "Client closed" : "sysread: $!") unless $n;
132
+        last unless $n;
133
+        last unless $n == 2048;
134
+    }
135
+    $total;
136
+}
137
+
138
+
139
+=back
140
+
141
+=head1 BUGS
142
+
143
+There is a problem with the interaction between the L<HTTP::Daemon> base class and
144
+L<IO::Socket::SSL> buffering which causes large post or put actions (>66k or so,
145
+depending on your OS) to hang.
146
+
147
+See L<https://rt.cpan.org/Ticket/Display.html?id=52602>.
148
 
149
 =head1 SEE ALSO
150
 
151
@@ -167,10 +205,13 @@
152
 
153
 L<IO::Socket::SSL>, L<HTTP::Daemon>, L<Apache>
154
 
155
+Github repository: L<http://github.com/aufflick/p5-http-daemon-ssl>
156
+
157
 =head1 COPYRIGHT
158
 
159
 Code and documentation from HTTP::Daemon Copyright 1996-2001, Gisle Aas
160
 Changes Copyright 2003-2004, Peter Behroozi
161
+Changes Copyright 2007-2009, Mark Aufflick C<< <mark@aufflick.com> >>
162
 
163
 This library is free software; you can redistribute it and/or
164
 modify it under the same terms as Perl itself.
165
Common subdirectories: ../HTTP-Daemon-SSL-1.04/certs and ./certs
166
Only in .: d
167
Common subdirectories: ../HTTP-Daemon-SSL-1.04/t and ./t

Return to bug 216133