Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/iq.c

    r4306d8b r608f8cf  
    3131{
    3232        struct im_connection *ic = data;
     33        struct jabber_data *jd = ic->proto_data;
    3334        struct xt_node *c, *reply = NULL;
    3435        char *type, *s;
     
    4647        if( strcmp( type, "result" ) == 0 || strcmp( type, "error" ) == 0 )
    4748        {
    48                 return jabber_cache_handle_packet( ic, node );
     49                struct jabber_cache_entry *entry;
     50               
     51                if( ( s = xt_find_attr( node, "id" ) ) == NULL ||
     52                    strncmp( s, jd->cached_id_prefix, strlen( jd->cached_id_prefix ) ) != 0 )
     53                {
     54                        /* Silently ignore it, without an ID (or a non-cache
     55                           ID) we don't know how to handle the packet and we
     56                           probably don't have to. */
     57                        return XT_HANDLED;
     58                }
     59               
     60                entry = g_hash_table_lookup( jd->node_cache, s );
     61               
     62                if( entry == NULL )
     63                        imcb_log( ic, "WARNING: Received IQ-%s packet with unknown/expired ID %s!", type, s );
     64                else if( entry->func )
     65                        return entry->func( ic, node, entry->node );
    4966        }
    5067        else if( strcmp( type, "get" ) == 0 )
Note: See TracChangeset for help on using the changeset viewer.