Index: Agent.pm
===================================================================
--- Agent.pm (revision 741)
+++ Agent.pm (working copy)
@@ -92,21 +92,32 @@
my $response = $stanza->make_response();
$response->set_raw("".$vcard."");
- $response->deliver($vhost);
+ $response->deliver($vhost);
}
sub handle_iq_disco_info {
my ($self, $vhost, $stanza) = @_;
+
+ my $query = $stanza->first_element();
+ my $disco_node = $query && $query->attr('{}node');
- my $features = $self->features($stanza->from_jid);
- my $identities = $self->identities($stanza->from_jid);
+ my $features = $self->features($stanza->from_jid, $disco_node);
+ my $identities = $self->identities($stanza->from_jid, $disco_node);
my $response = $stanza->make_response();
- my $xml = "" .
- join('',map({ "" } @$identities)) .
- join('',map({ "" } @$features)) .
- "";
+ my $xml = "" } @$identities))
+ . join('',map({ "" } @$features))
+ . "";
+ }
+ else {
+ $xml .= ' />';
+ }
+
$response->set_raw($xml);
$response->deliver($vhost);
}
@@ -114,13 +125,25 @@
sub handle_iq_disco_items {
my ($self, $vhost, $stanza) = @_;
- my $items = $self->child_services($stanza->from_jid);
+ my $query = $stanza->first_element();
+ my $disco_node = $query && $query->attr('{}node');
+
+ my $items = $self->child_services($stanza->from_jid, $disco_node);
my $response = $stanza->make_response();
- my $xml = "" .
- join('',map({ " " } @$items)) .
- "";
+ my $xml = "" } @$items))
+ . "";
+ }
+ else {
+ $xml .= ' />';
+ }
+
$response->set_raw($xml);
$response->deliver($vhost);
}