Loading ...
Sorry, an error occurred while loading the content.

Re: [soaplite] SOAP::Lite port for mod_perl 2.0

Expand Messages
  • Andre Merzky
    I would be interested in that as well... Cheers, Andre. ... -- +-----------------------------------------------------------------+ ...
    Message 1 of 4 , Jun 13, 2005
    • 0 Attachment
      I would be interested in that as well...

      Cheers, Andre.


      Quoting [kyriacos71] (Jun 13 2005):
      >
      > Is there any patch or newer version to work on mod_perl2 (2.0 not
      > 1.99_x)? After upgrading to released mod_perl 2.0 due to namespace
      > change several changes should be applied to use Apache2::* core modules
      > and constants as Apache2::Const::*.
      > If such a patch exist can somebody provide it. In case that his is not
      > available, when is expected to be?
      >
      > Thanks in Advance.
      >
      > Kyriacos Kyriacou

      --
      +-----------------------------------------------------------------+
      | Andre Merzky | phon: +31 - 20 - 598 - 7759 |
      | Vrije Universiteit Amsterdam (VU) | fax : +31 - 20 - 598 - 7653 |
      | Dept. of Computer Science | mail: merzky@... |
      | De Boelelaan 1083a | www: http://www.merzky.net |
      | 1081 HV Amsterdam, Netherlands | |
      +-----------------------------------------------------------------+
    • kyriacos71
      I have manage to create a patch for SOAP::Transport::HTTP that is the only module need patching in order to run on mod_perl 2.x. This apllies to latest
      Message 2 of 4 , Jun 14, 2005
      • 0 Attachment
        I have manage to create a patch for SOAP::Transport::HTTP that is the
        only module need patching in order to run on mod_perl 2.x. This
        apllies to latest distribution of SOAP::Lite (SOAP-Lite-0.65_6) and
        accrding to my checks after applying it is working on all version of
        mod_perl (1.xx, 1.99, 2.xx)

        Here is the path:
        ----------------begin of patch -----------------------
        --- /usr/src/SOAP-Lite-0.65_6_org/lib/SOAP/Transport/HTTP.pm 2005-
        03-30 11:58:34.000000000 +0300
        +++ /usr/src/SOAP-Lite-0.65_6/lib/SOAP/Transport/HTTP.pm 2005-
        06-15 01:19:22.819470272 +0300
        @@ -505,23 +505,34 @@
        $self = $class->SUPER::new(@_);
        SOAP::Trace::objects('()');
        }
        - die "Could not find or load mod_perl"
        - unless (eval "require mod_perl");
        - die "Could not detect your version of mod_perl"
        - if (!defined($mod_perl::VERSION));
        - if ($mod_perl::VERSION < 1.99) {
        - require Apache;
        - require Apache::Constants;
        - Apache::Constants->import('OK');
        - $self->{'MOD_PERL_VERSION'} = 1;
        - } elsif ($mod_perl::VERSION < 3) {
        - require Apache::RequestRec;
        - require Apache::RequestIO;
        - require Apache::Const;
        - Apache::Const->import(-compile => 'OK');
        +
        + if( defined $ENV{MOD_PERL_API_VERSION} && $ENV
        {MOD_PERL_API_VERSION} >= 2) { # mod_perl 2.0
        + require Apache2::RequestRec;
        + require Apache2::RequestIO;
        + require Apache2::Const;
        + Apache2::Const->import(-compile => 'OK');
        $self->{'MOD_PERL_VERSION'} = 2;
        - } else {
        - die "Unsupported version of mod_perl";
        + $self->{OK} = &Apache2::Const::OK;
        + } else { # mod_perl 1.xx
        + die "Could not find or load mod_perl"
        + unless (eval "require mod_perl");
        + die "Could not detect your version of mod_perl"
        + if (!defined($mod_perl::VERSION));
        +
        + if ($mod_perl::VERSION < 1.99) {
        + require Apache;
        + require Apache::Constants;
        + Apache::Constants->import('OK');
        + $self->{'MOD_PERL_VERSION'} = 1;
        + $self->{OK} = &Apache::Constants::OK;
        + } else {
        + require Apache::RequestRec;
        + require Apache::RequestIO;
        + require Apache::Const;
        + Apache::Const->import(-compile => 'OK');
        + $self->{'MOD_PERL_VERSION'} = 1.99;
        + $self->{OK} = &Apache::OK;
        + }
        }
        return $self;
        }
        @@ -529,12 +540,20 @@
        sub handler {
        my $self = shift->new;
        my $r = shift;
        - $r = Apache->request if (!$r && $self->{'MOD_PERL_VERSION'} == 1);
        +
        + if(!$r) {
        + if( $self->{'MOD_PERL_VERSION'} < 2 ) { $r = Apache->request
        () }
        + else { $r = Apache2::RequestUtil->request() }
        + }
        +
        + my $cont_len;
        + if( $self->{'MOD_PERL_VERSION'} == 1 ) { $cont_len = $r->header_in
        ('Content-length') }
        + else { $cont_len = $r-
        >headers_in->get('Content-length') }

        $self->request(HTTP::Request->new(
        $r->method() => $r->uri,
        HTTP::Headers->new($r->headers_in),
        - do { my ($c,$buf); while ($r->read($buf,$r->header_in('Content-
        length'))) { $c.=$buf; } $c; }
        + do { my ($c,$buf); while ($r->read($buf, $cont_len)) {
        $c.=$buf; } $c; }
        ));
        $self->SUPER::handle;

        @@ -545,10 +564,15 @@
        # will emulate normal response, but with custom status code
        # which could also be 500.
        $r->status($self->response->code);
        - $self->response->headers->scan(sub { $r->header_out(@_) });
        - $r->send_http_header(join '; ', $self->response->content_type);
        + if ( $self->{'MOD_PERL_VERSION'} > 1 ) {
        + $self->response->headers->scan(sub { $r->headers_out->set
        (@_) });
        + $r->content_type(join '; ', $self->response->content_type);
        + } else {
        + $self->response->headers->scan(sub { $r->header_out(@_) });
        + $r->send_http_header(join '; ', $self->response->content_type);
        + }
        $r->print($self->response->content);
        - return $self->{'MOD_PERL_VERSION'} == 2 ? &Apache::OK :
        &Apache::Constants::OK;
        + return $self->{OK};
        }

        sub configure {
        -------- end of patch -----------------------------------

        Kyriacos C. Kyriacou
      • Andre Merzky
        Wow! Thanks for the patch!! Andre. ... -- +-----------------------------------------------------------------+ ...
        Message 3 of 4 , Jun 15, 2005
        • 0 Attachment
          Wow! Thanks for the patch!!

          Andre.

          Quoting [kyriacos71] (Jun 15 2005):
          > Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
          > Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
          > To: soaplite@yahoogroups.com
          > From: "kyriacos71" <kyriacosk@...>
          > Mailing-List: list soaplite@yahoogroups.com; contact soaplite-owner@yahoogroups.com
          > Date: Wed, 15 Jun 2005 06:52:50 -0000
          > Subject: [soaplite] Re: SOAP::Lite port for mod_perl 2.0
          >
          > I have manage to create a patch for SOAP::Transport::HTTP that is the
          > only module need patching in order to run on mod_perl 2.x. This
          > apllies to latest distribution of SOAP::Lite (SOAP-Lite-0.65_6) and
          > accrding to my checks after applying it is working on all version of
          > mod_perl (1.xx, 1.99, 2.xx)
          >
          > Here is the path:
          > ----------------begin of patch -----------------------
          > --- /usr/src/SOAP-Lite-0.65_6_org/lib/SOAP/Transport/HTTP.pm 2005-
          > 03-30 11:58:34.000000000 +0300
          > +++ /usr/src/SOAP-Lite-0.65_6/lib/SOAP/Transport/HTTP.pm 2005-
          > 06-15 01:19:22.819470272 +0300
          > @@ -505,23 +505,34 @@
          > $self = $class->SUPER::new(@_);
          > SOAP::Trace::objects('()');
          > }
          > - die "Could not find or load mod_perl"
          > - unless (eval "require mod_perl");
          > - die "Could not detect your version of mod_perl"
          > - if (!defined($mod_perl::VERSION));
          > - if ($mod_perl::VERSION < 1.99) {
          > - require Apache;
          > - require Apache::Constants;
          > - Apache::Constants->import('OK');
          > - $self->{'MOD_PERL_VERSION'} = 1;
          > - } elsif ($mod_perl::VERSION < 3) {
          > - require Apache::RequestRec;
          > - require Apache::RequestIO;
          > - require Apache::Const;
          > - Apache::Const->import(-compile => 'OK');
          > +
          > + if( defined $ENV{MOD_PERL_API_VERSION} && $ENV
          > {MOD_PERL_API_VERSION} >= 2) { # mod_perl 2.0
          > + require Apache2::RequestRec;
          > + require Apache2::RequestIO;
          > + require Apache2::Const;
          > + Apache2::Const->import(-compile => 'OK');
          > $self->{'MOD_PERL_VERSION'} = 2;
          > - } else {
          > - die "Unsupported version of mod_perl";
          > + $self->{OK} = &Apache2::Const::OK;
          > + } else { # mod_perl 1.xx
          > + die "Could not find or load mod_perl"
          > + unless (eval "require mod_perl");
          > + die "Could not detect your version of mod_perl"
          > + if (!defined($mod_perl::VERSION));
          > +
          > + if ($mod_perl::VERSION < 1.99) {
          > + require Apache;
          > + require Apache::Constants;
          > + Apache::Constants->import('OK');
          > + $self->{'MOD_PERL_VERSION'} = 1;
          > + $self->{OK} = &Apache::Constants::OK;
          > + } else {
          > + require Apache::RequestRec;
          > + require Apache::RequestIO;
          > + require Apache::Const;
          > + Apache::Const->import(-compile => 'OK');
          > + $self->{'MOD_PERL_VERSION'} = 1.99;
          > + $self->{OK} = &Apache::OK;
          > + }
          > }
          > return $self;
          > }
          > @@ -529,12 +540,20 @@
          > sub handler {
          > my $self = shift->new;
          > my $r = shift;
          > - $r = Apache->request if (!$r && $self->{'MOD_PERL_VERSION'} == 1);
          > +
          > + if(!$r) {
          > + if( $self->{'MOD_PERL_VERSION'} < 2 ) { $r = Apache->request
          > () }
          > + else { $r = Apache2::RequestUtil->request() }
          > + }
          > +
          > + my $cont_len;
          > + if( $self->{'MOD_PERL_VERSION'} == 1 ) { $cont_len = $r->header_in
          > ('Content-length') }
          > + else { $cont_len = $r-
          > >headers_in->get('Content-length') }
          >
          > $self->request(HTTP::Request->new(
          > $r->method() => $r->uri,
          > HTTP::Headers->new($r->headers_in),
          > - do { my ($c,$buf); while ($r->read($buf,$r->header_in('Content-
          > length'))) { $c.=$buf; } $c; }
          > + do { my ($c,$buf); while ($r->read($buf, $cont_len)) {
          > $c.=$buf; } $c; }
          > ));
          > $self->SUPER::handle;
          >
          > @@ -545,10 +564,15 @@
          > # will emulate normal response, but with custom status code
          > # which could also be 500.
          > $r->status($self->response->code);
          > - $self->response->headers->scan(sub { $r->header_out(@_) });
          > - $r->send_http_header(join '; ', $self->response->content_type);
          > + if ( $self->{'MOD_PERL_VERSION'} > 1 ) {
          > + $self->response->headers->scan(sub { $r->headers_out->set
          > (@_) });
          > + $r->content_type(join '; ', $self->response->content_type);
          > + } else {
          > + $self->response->headers->scan(sub { $r->header_out(@_) });
          > + $r->send_http_header(join '; ', $self->response->content_type);
          > + }
          > $r->print($self->response->content);
          > - return $self->{'MOD_PERL_VERSION'} == 2 ? &Apache::OK :
          > &Apache::Constants::OK;
          > + return $self->{OK};
          > }
          >
          > sub configure {
          > -------- end of patch -----------------------------------
          >
          > Kyriacos C. Kyriacou
          >
          >
          >
          >
          >
          > Yahoo! Groups Links
          >
          >
          >
          >
          >



          --
          +-----------------------------------------------------------------+
          | Andre Merzky | phon: +31 - 20 - 598 - 7759 |
          | Vrije Universiteit Amsterdam (VU) | fax : +31 - 20 - 598 - 7653 |
          | Dept. of Computer Science | mail: merzky@... |
          | De Boelelaan 1083a | www: http://www.merzky.net |
          | 1081 HV Amsterdam, Netherlands | |
          +-----------------------------------------------------------------+
        Your message has been successfully submitted and would be delivered to recipients shortly.