Provide an API, because ENV is no longer friendly to us user/miker/give-up-at-browser_stop
authorMike Rylander <miker@esilibrary.com>
Thu, 3 Nov 2016 14:07:11 +0000 (10:07 -0400)
committerMike Rylander <miker@esilibrary.com>
Thu, 3 Nov 2016 14:07:11 +0000 (10:07 -0400)
Signed-off-by: Mike Rylander <miker@esilibrary.com>
src/perl/lib/OpenSRF.pm
src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm

index b577ecd..33b8c83 100644 (file)
@@ -42,4 +42,21 @@ Returns the scalar value of its caller.
 
 sub class { return scalar(caller); }
 
+=head2 OSRF_APACHE_REQUEST_OBJ
+
+Gets and sets the Apache request object when running inside mod_perl.
+This allows other parts of OpenSRF to investigate the state of the
+remote connection, such as whether the client has disconnected, and
+react accordingly.
+
+=cut
+
+our $_OARO;
+sub OSRF_APACHE_REQUEST_OBJ {
+       my $self = shift;
+       my $a = shift;
+       $_OARO = $a if $a;
+       return $_OARO;
+}
+
 1;
index 04259e2..9e15ecd 100644 (file)
@@ -211,7 +211,7 @@ sub wait {
     vec($infile, $socket->fileno, 1) = 1;
 
     my $nfound;
-    if (!$ENV{OSRF_APACHE_REQUEST_OBJ} || $timeout <= 1.0) {
+    if (!OpenSRF->OSRF_APACHE_REQUEST_OBJ || $timeout <= 1.0) {
         $nfound = select($infile, undef, undef, $timeout);
     } else {
         $timeout -= 1.0;
@@ -226,8 +226,8 @@ sub wait {
             $nfound = select($infile, undef, undef, $sleep);
             last if $nfound;
             if (
-                $ENV{OSRF_APACHE_REQUEST_OBJ} &&
-                $ENV{OSRF_APACHE_REQUEST_OBJ}->connection->aborted
+                OpenSRF->OSRF_APACHE_REQUEST_OBJ &&
+                OpenSRF->OSRF_APACHE_REQUEST_OBJ->connection->aborted
             ) {
                 # Should this be more severe? Die or throw error?
                 $logger->warn("Upstream Apache client disconnected, aborting.");