diff options
author | ivan <ivan> | 2010-07-03 04:19:59 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-07-03 04:19:59 +0000 |
commit | 86dedc46fa7e5273f42534a9baac3de4d4fd0b61 (patch) | |
tree | 206f1f2d922ee734dabfa471f449043ca0c8d733 /FS/bin/freeside-selfservice-xmlrpcd | |
parent | 98b9624b75d092f9451132182bf17fdf24ce405e (diff) |
fix leaking db connections in freeside-selfservice-xmlrpcd, RT#7780
Diffstat (limited to 'FS/bin/freeside-selfservice-xmlrpcd')
-rwxr-xr-x | FS/bin/freeside-selfservice-xmlrpcd | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/FS/bin/freeside-selfservice-xmlrpcd b/FS/bin/freeside-selfservice-xmlrpcd index f5a4b9895..fa745ecf2 100755 --- a/FS/bin/freeside-selfservice-xmlrpcd +++ b/FS/bin/freeside-selfservice-xmlrpcd @@ -23,8 +23,8 @@ use POE::Wheel::SocketFactory; # For serving socket connections. use XMLRPC::Transport::HTTP; #SOAP::Transport::HTTP; use XMLRPC::Lite; # for XMLRPC::Serializer -use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 ); -use FS::UID qw(adminsuidsetup forksuidsetup); +use FS::Daemon qw( daemonize1 drop_root logfile daemonize2 ); +use FS::UID qw( adminsuidsetup forksuidsetup dbh ); use FS::Conf; use FS::ClientAPI qw( load_clientapi_modules ); use FS::ClientAPI_XMLRPC; #FS::SelfService::XMLRPC; @@ -68,6 +68,10 @@ my $conf = new FS::Conf; die "not running; selfservice-xmlrpc conf option is off\n" unless $conf->exists('selfservice-xmlrpc'); +#parent doesn't need to hold a DB connection open +dbh->disconnect; +undef $FS::UID::dbh; + ### # the main loop ### @@ -186,6 +190,9 @@ sub server_do_fork { $heap->{is_a_child} = 1; $heap->{children} = {}; + #freeside db connection, etc. + forksuidsetup($user); + return; } } @@ -280,7 +287,7 @@ sub client_stop { sub client_got_request { my ( $heap, $request ) = @_[ HEAP, ARG0 ]; - freeside_kid_time(); + forksuidsetup($user) unless dbh && dbh->ping; my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup); @@ -305,18 +312,6 @@ sub client_got_request { $heap->{client}->put($response); } -#setup the database connection and other things FS::SelfService::XMLRPC -#expects to be in place. aka "kid time" in freeside-selfservice-server -sub freeside_kid_time { - - #we did need a db connection in the parent, so - ##get new db handle - $FS::UID::dbh->{InactiveDestroy} = 1; - forksuidsetup($user); - - #i guess that was it -} - ### The client handler received an error. Stop the ReadWrite wheel, ### which also closes the socket. |