File SOAP-Lite-0.712-HTTPS_DAEMON.patch of Package perl-SOAP-Lite
diff -ruN SOAP-Lite-0.712-orig/lib/SOAP/Transport/HTTP.pm SOAP-Lite-0.712/lib/SOAP/Transport/HTTP.pm
--- SOAP-Lite-0.712-orig/lib/SOAP/Transport/HTTP.pm 2010-06-03 17:33:26.000000000 +0200
+++ SOAP-Lite-0.712/lib/SOAP/Transport/HTTP.pm 2010-08-16 10:55:06.000000000 +0200
@@ -698,6 +698,60 @@
# ======================================================================
+package SOAP::Transport::HTTPS::Daemon;
+
+use Carp ();
+use vars qw($AUTOLOAD @ISA);
+@ISA = qw(SOAP::Transport::HTTP::Server);
+
+sub DESTROY { SOAP::Trace::objects('()') }
+
+sub new { require HTTP::Daemon::SSL;
+ my $self = shift;
+
+ unless (ref $self) {
+ my $class = ref($self) || $self;
+
+ my(@params, @methods);
+ while (@_) { $class->can($_[0]) ? push(@methods, shift() => shift) : push(@params, shift) }
+ $self = $class->SUPER::new;
+ $self->{_daemon} = HTTP::Daemon::SSL->new(@params) or Carp::croak "Can't create daemon: $!";
+ $self->myuri(URI->new($self->url)->canonical->as_string);
+ while (@methods) { my($method, $params) = splice(@methods,0,2);
+ $self->$method(ref $params eq 'ARRAY' ? @$params : $params)
+ }
+ SOAP::Trace::objects('()');
+ }
+ return $self;
+}
+
+sub AUTOLOAD {
+ my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::') + 2);
+ return if $method eq 'DESTROY';
+
+ no strict 'refs';
+ *$AUTOLOAD = sub { shift->{_daemon}->$method(@_) };
+ goto &$AUTOLOAD;
+}
+
+sub handle {
+ my $self = shift->new;
+ while (my $c = $self->accept) {
+ while (my $r = $c->get_request) {
+ $self->request($r);
+ $self->SUPER::handle;
+ $c->send_response($self->response)
+ }
+ # replaced ->close, thanks to Sean Meisner <Sean.Meisner@VerizonWireless.com>
+ # shutdown() doesn't work on AIX. close() is used in this case. Thanks to Jos Clijmans <jos.clijmans@recyfin.be>
+ UNIVERSAL::isa($c, 'shutdown') ? $c->shutdown(2) : $c->close();
+ undef $c;
+ }
+}
+
+# ======================================================================
+
+
package SOAP::Transport::HTTP::Apache;
use vars qw(@ISA);