Allow synonyms for localhost
[spider.git] / perl / AsyncMsg.pm
index 95c5e8f67c974d8eace5f0e5ba9b7fbf69ef42f1..f8cd2f9f3b60bea14be79d24029a69049b685a9c 100644 (file)
@@ -203,9 +203,11 @@ sub raw
        my %args = @_;
 
        my $handler = delete $args{handler} || \&handle_raw;
+       
        my $conn = $pkg->new($call, $handler);
        $conn->{prefix} = delete $args{prefix} if exists $args{prefix};
        $conn->{prefix} ||= '';
+       $conn->{on_disconnect} = delete $args{on_disc} || delete $args{on_disconnect};
        $r = $conn->connect($host, $port, on_connect => &_on_raw_connect);
        return $r ? $conn : undef;
 }
@@ -267,6 +269,7 @@ sub disconnect
                if ($dxchan) {
                        no strict 'refs';
                        $ondisc->($conn, $dxchan);
+                       delete $conn->{on_disconnect};
                }
        }
        delete $conn->{mojo};
@@ -274,6 +277,19 @@ sub disconnect
        $conn->SUPER::disconnect;
 }
 
+sub _send_later
+{
+       my $conn = shift;
+       my $m = shift;
+       
+       if (isdbg('async')) {
+               my $s = $m;
+               $s =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
+               dbg("AsyncMsg: send $s");
+       }
+       $conn->send_later($m);
+}
+
 sub DESTROY
 {
        my $conn = shift;