projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
RT# 81961 Repair broken links in POD documentation
[freeside.git]
/
FS
/
bin
/
freeside-selfservice-xmlrpcd
diff --git
a/FS/bin/freeside-selfservice-xmlrpcd
b/FS/bin/freeside-selfservice-xmlrpcd
index
d7b30b0
..
9a8481e
100755
(executable)
--- a/
FS/bin/freeside-selfservice-xmlrpcd
+++ b/
FS/bin/freeside-selfservice-xmlrpcd
@@
-3,9
+3,11
@@
# based on http://www.perlmonks.org/?node_id=582781 by Justin Hawkins
# and http://poe.perl.org/?POE_Cookbook/Web_Server_With_Forking
# based on http://www.perlmonks.org/?node_id=582781 by Justin Hawkins
# and http://poe.perl.org/?POE_Cookbook/Web_Server_With_Forking
-###
-# modules and constants and variables, oh my
-###
+=head1 NAME
+
+freeside-selfservice-xmlrpcd
+
+=cut
use warnings;
use strict;
use warnings;
use strict;
@@
-23,11
+25,12
@@
use POE::Wheel::SocketFactory; # For serving socket connections.
use XMLRPC::Transport::HTTP; #SOAP::Transport::HTTP;
use XMLRPC::Lite; # for XMLRPC::Serializer
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
);
+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;
use FS::Conf;
use FS::ClientAPI qw( load_clientapi_modules );
use FS::ClientAPI_XMLRPC; #FS::SelfService::XMLRPC;
+use FS::TicketSystem;
#freeside
my $FREESIDE_LOG = "%%%FREESIDE_LOG%%%";
#freeside
my $FREESIDE_LOG = "%%%FREESIDE_LOG%%%";
@@
-36,7
+39,7
@@
my $lock_file = "$FREESIDE_LOCK/selfservice-xmlrpcd.writelock";
#freeside xmlrpc.cgi
my %typelookup = (
#freeside xmlrpc.cgi
my %typelookup = (
- base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64'],
+
#not utf-8 safe#
base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64'],
dateTime => [35, sub {$_[0] =~ /^\d{8}T\d\d:\d\d:\d\d$/}, 'as_dateTime'],
string => [40, sub {1}, 'as_string'],
);
dateTime => [35, sub {$_[0] =~ /^\d{8}T\d\d:\d\d:\d\d$/}, 'as_dateTime'],
string => [40, sub {1}, 'as_string'],
);
@@
-63,11
+66,17
@@
logfile("$FREESIDE_LOG/selfservice-xmlrpcd.log");
daemonize2();
daemonize2();
+FS::ClientAPI::Signup::clear_cache();
+
my $conf = new FS::Conf;
die "not running; selfservice-xmlrpc conf option is off\n"
unless $conf->exists('selfservice-xmlrpc');
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
###
###
# the main loop
###
@@
-186,6
+195,12
@@
sub server_do_fork {
$heap->{is_a_child} = 1;
$heap->{children} = {};
$heap->{is_a_child} = 1;
$heap->{children} = {};
+ #freeside db connection, etc.
+ forksuidsetup($user);
+
+ #why isn't this needed ala freeside-selfservice-server??
+ #FS::TicketSystem->init();
+
return;
}
}
return;
}
}
@@
-280,7
+295,7
@@
sub client_stop {
sub client_got_request {
my ( $heap, $request ) = @_[ HEAP, ARG0 ];
sub client_got_request {
my ( $heap, $request ) = @_[ HEAP, ARG0 ];
- f
reeside_kid_time()
;
+ f
orksuidsetup($user) unless dbh && dbh->ping
;
my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup);
my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup);
@@
-300,23
+315,12
@@
sub client_got_request {
$soap->request($request);
$soap->handle;
$soap->request($request);
$soap->handle;
- my $response = $soap->response;
-
- $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 {
+ $FS::UID::dbh->commit() if $FS::UID::dbh; #XXX handle commit error
- #if we need a db connection in the parent
- ##get new db handle
- #$FS::UID::dbh->{InactiveDestroy} = 1;
- #forksuidsetup($user);
-
- adminsuidsetup($user);
+ my $response = $soap->response;
- #i guess that was it
+ $heap->{client}->put($response);
}
### The client handler received an error. Stop the ReadWrite wheel,
}
### The client handler received an error. Stop the ReadWrite wheel,