'Process an incoming disco#info stanza. If it is a get
request, find and return the appropriate identities
and features. If it is an info result, fire the
disco_info event.
Arguments:
iq -- The incoming disco#items stanza.'

def _handle_disco_info(self, iq):

    if (iq['type'] == 'get'):
        log.debug(('Received    disco    info    query    from    ' + '<%s>    to    <%s>.'), iq['from'], iq['to'])
        info = self.api['get_info'](iq['to'], iq['disco_info']['node'], iq['from'], iq)
        if isinstance(info, Iq):
            info['id'] = iq['id']
            info.send()
        else:
            iq.reply()
            if info:
                info = self._fix_default_info(info)
                iq.set_payload(info.xml)
            iq.send()
    elif (iq['type'] == 'result'):
        log.debug(('Received    disco    info    result    from    ' + '<%s>    to    <%s>.'), iq['from'], iq['to'])
        if self.use_cache:
            log.debug('Caching    disco    info    result    from    <%s>    to    <%s>.', iq['from'], iq['to'])
            if self.xmpp.is_component:
                ito = iq['to'].full
            else:
                ito = None
            self.api['cache_info'](iq['from'], iq['disco_info']['node'], ito, iq)
        self.xmpp.event('disco_info', iq)
