git://git.camperquake.de
/
xmlrtorrent.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix torrent link detection
[xmlrtorrent.git]
/
xmlrtorrent
/
SocketTalker.pm
diff --git
a/xmlrtorrent/SocketTalker.pm
b/xmlrtorrent/SocketTalker.pm
index
453b7f6
..
14b6590
100644
(file)
--- a/
xmlrtorrent/SocketTalker.pm
+++ b/
xmlrtorrent/SocketTalker.pm
@@
-8,6
+8,7
@@
use xmlrtorrent::TalkerBase;
@ISA = qw(xmlrtorrent::TalkerBase);
use RPC::XML;
@ISA = qw(xmlrtorrent::TalkerBase);
use RPC::XML;
+use RPC::XML::Parser;
use IO::Socket::UNIX;
use strict;
use IO::Socket::UNIX;
use strict;
@@
-20,6
+21,7
@@
sub new {
$self->{'_PARAMS'} = {
'SOCKET' => ['', 'filename of socket'],
};
$self->{'_PARAMS'} = {
'SOCKET' => ['', 'filename of socket'],
};
+ $self->{'__RPCXMLPARSER'} = RPC::XML::Parser->new();
bless($self, $class);
bless($self, $class);
@@
-43,22
+45,24
@@
sub _create_scgi_header($$$) {
sub send_request {
my $self = shift;
sub send_request {
my $self = shift;
- my
@params = @_
;
+ my
(@params) = (@_)
;
- unless (exists($self->{'_PARAMS'}->{'SOCKET'}) and defined($self->{'_PARAMS'}->{'SOCKET'}) and ($self->{'_PARAMS'}->{'SOCKET'} ne '')) {
+ my $socketfile = $self->_getval('SOCKET');
+
+ unless (defined $socketfile and $socketfile ne '') {
return 'socket talker: SOCKET not set';
}
# prepare socket
my $socket = IO::Socket::UNIX->new(
'Type' => SOCK_STREAM,
return 'socket talker: SOCKET not set';
}
# prepare socket
my $socket = IO::Socket::UNIX->new(
'Type' => SOCK_STREAM,
- '
Local' => $self->{'_PARAMS'}->{'SOCKET'}
,
+ '
Peer' => $socketfile
,
)
)
- or return "socket: cannot connect to SOCKET: $!";
+ or return "socket
talker
: cannot connect to SOCKET: $!";
$socket->autoflush(1); # default since 1.18, but be sure
# prepare XML RPC request
$socket->autoflush(1); # default since 1.18, but be sure
# prepare XML RPC request
- my $rpc_request = RPC::XML::request->new(@params);
+ my $rpc_request = RPC::XML::request->new(@params)
->as_string()
;
# prpepare SCGI request
my $scgi_request =
# prpepare SCGI request
my $scgi_request =
@@
-75,16
+79,16
@@
sub send_request {
# read from socket
while (my $line = <$socket>) {
# read from socket
while (my $line = <$socket>) {
- last if ($line =~ /^$/); # munch headers
+ last if ($line =~ /^
\s*
$/); # munch headers
}
my $ret = '';
while (my $line = <$socket>) {
$ret .= $line;
}
}
my $ret = '';
while (my $line = <$socket>) {
$ret .= $line;
}
- $socket->close();
+ $socket->close()
or return "socket talker: cannot close SOCKET: $!"
;
- return $
ret
;
+ return $
self->{'__RPCXMLPARSER'}->parse($ret)
;
}
1;
}
1;