Index: perl/modules/jabber.pl
===================================================================
--- perl/modules/jabber.pl (revision c25a20fcbef752a45d4e0f8a19d35b2fda93190f)
+++ perl/modules/jabber.pl (revision 0da506ce9d98b7097cea151432f3eb19eab40e6d)
@@ -1414,5 +1414,5 @@
         die("Unable to resolve account $from") unless $from_jid;
         $to_jid = resolveDestJID($to, $from_jid);
-        push @matches, [$from_jid, $to_jid];
+        push @matches, [$from_jid, $to_jid] if $to_jid;
     } else {
         for my $f ($conn->getJIDs) {
@@ -1461,10 +1461,5 @@
             $user = $self->to;
         }
-        $user = Net::Jabber::JID->new($user)->GetJID($inst ? 'full' : 'base');
-        $filter = "jabber-user-$user";
-        $ftext = qq{type ^jabber\$ and ( ( direction ^in\$ and from ^$user ) } .
-                 qq{or ( direction ^out\$ and to ^$user ) ) };
-        BarnOwl::filter("$filter $ftext");
-        return $filter;
+        return smartfilter_user($user, $inst);
     } elsif ($self->jtype eq 'groupchat') {
         my $room = $self->room;
@@ -1473,6 +1468,23 @@
         BarnOwl::filter("$filter $ftext");
         return $filter;
-    }
-}
+    } elsif ($self->login ne 'none') {
+        return smartfilter_user($self->from, $inst);
+    }
+}
+
+sub smartfilter_user {
+    my $user = shift;
+    my $inst = shift;
+
+    $user   = Net::Jabber::JID->new($user)->GetJID( $inst ? 'full' : 'base' );
+    my $filter = "jabber-user-$user";
+    my $ftext  =
+        qq{type ^jabber\$ and ( ( direction ^in\$ and from ^$user ) }
+      . qq{or ( direction ^out\$ and to ^$user ) ) };
+    BarnOwl::filter("$filter $ftext");
+    return $filter;
+
+}
+
 
 1;
