summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2016-07-06 11:11:31 -0700
committerIvan Kohler <ivan@freeside.biz>2016-07-06 11:11:31 -0700
commit4314d9e0da1486cead65bc75ee0ab4351d49555e (patch)
tree177c0740b7ddf1d45baf8bed4f8808173ed260f0
parent7d38afc8a7175c836721400f3b08f84f1c20ea4f (diff)
fix intermittent 900 NET OR SSL error, RT#42648
-rw-r--r--FS/FS/Mason.pm31
-rw-r--r--htetc/freeside-base2.conf5
2 files changed, 32 insertions, 4 deletions
diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm
index 7b4db9932..24ddf7920 100644
--- a/FS/FS/Mason.pm
+++ b/FS/FS/Mason.pm
@@ -573,7 +573,7 @@ if ( -e $addl_handler_use_file ) {
} # end package HTML::Mason::Commands;
-=head1 SUBROUTINE
+=head1 SUBROUTINES
=over 4
@@ -669,6 +669,35 @@ sub mason_interps {
}
+=item child_init
+
+Per-process Apache child initialization code.
+
+Calls srand() to re-seed Perl's PRNG so that multiple children do not generate
+the same "random" numbers.
+
+Works around a Net::SSLeay connection error by creating and deleting an SSL
+context, so subsequent connections do not error out with a CTX_new (900 NET OR
+SSL ERROR).
+
+=cut
+
+sub child_init {
+ #my ($pool, $server) = @_; #the child process pool (APR::Pool) and the server object (Apache2::ServerRec).
+
+ srand();
+
+ #{
+ use Net::SSLeay;
+ package Net::SSLeay;
+ initialize();
+ my $bad_ctx = new_x_ctx();
+ while ( ERR_get_error() ) {}; #print_errs('CTX_new');
+ CTX_free($bad_ctx);
+ #}
+
+}
+
=back
=head1 BUGS
diff --git a/htetc/freeside-base2.conf b/htetc/freeside-base2.conf
index e981ef27b..309279dfa 100644
--- a/htetc/freeside-base2.conf
+++ b/htetc/freeside-base2.conf
@@ -6,12 +6,11 @@ PerlModule HTML::Mason
PerlSetVar MasonArgsMethod CGI
PerlModule HTML::Mason::ApacheHandler
-PerlChildInitHandler "sub { srand }"
-
PerlRequire "%%%MASON_HANDLER%%%"
+PerlChildInitHandler FS::Mason::child_init
+
#Locale::SubCountry
-#
AddDefaultCharset UTF-8
PerlModule FS::AuthCookieHandler