#TODO properly integrate if this works
BEGIN { $ENV{TERM} = 'dumb'; }
+sub _escape_shell_arg {
+ my ($self, $str) = (@_);
+ $str =~ s/((?:^|[^\\])(?:\\\\)*)'/$1\\'/g;
+ return "$str";
+}
+
+
sub _build_ssh_perl_command {
my ($self) = @_;
+ my $perl_command = join('', @{$self->perl_command});
+
+ #TODO non-trivial to escape properly for ssh and shell
+ #this "works" but is not right, needs to be replaced
+ #after testing
return [
do { my $c = $self->ssh_command; ref($c) ? @$c : $c },
@{$self->ssh_options}, $self->ssh_to,
- @{$self->perl_command}
+ $self->_escape_shell_arg($perl_command),
];
}
#ulimit of ~500 megs of v-ram
#TODO only works with ssh with quotes but only works locally
#with out quotes
-#sub _build_perl_command { [ 'sh', '-c', '"ulimit -v 200000; nice -n 15 perl -"' ] }
-sub _build_perl_command { [ 'perl', '-' ] }
+sub _build_perl_command {[ 'sh -c "ulimit -v 200000; nice -n 15 perl -"' ] }
+#sub _build_perl_command { [ 'perl', '-' ] }
#sub _build_perl_command { [ 'cat' ] }
around connect => sub {
Dlog_trace { "Creating Watchdog management timer for connection id $_" } $conn->_id;
$timer_id = Object::Remote->current_loop->watch_time(
- every => $self->watchdog_timeout / 5,
+ every => $self->watchdog_timeout / 3,
code => sub {
unless(defined($conn)) {
log_trace { "Weak reference to connection in Watchdog was lost, terminating update timer $timer_id" };