Changeset e374dee for libfaim/snac.c


Ignore:
Timestamp:
Oct 10, 2003, 5:12:30 PM (18 years ago)
Author:
James M. Kretchmar <kretch@mit.edu>
Branches:
master, barnowl_perlaim, debian, owl, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
fe6f1d3
Parents:
f4d0975
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfaim/snac.c

    r862371b re374dee  
    9191                        *prev = cur->next;
    9292                        if (cur->flags & AIM_SNACFLAGS_DESTRUCTOR) {
    93                                 struct aim_snac_destructor *asd = cur->data;
    94                                 cur->data = asd->data;
    95                                 free(asd);
     93                                free(cur->data);
     94                                cur->data = NULL;
    9695                        }
    9796                        return cur;
     
    103102}
    104103
    105 /* Free a SNAC, and call the appropriate destructor if necessary.
    106  */
    107 faim_internal faim_shortfunc void aim_cleansnac(aim_session_t *sess, aim_snac_t *snac)
    108 {
    109         aim_module_t *cur;
    110 
    111         if (snac->flags & AIM_SNACFLAGS_DESTRUCTOR) {
    112                 struct aim_snac_destructor *d = snac->data;
    113                 aim_modsnac_t modsnac;
    114 
    115                 modsnac.id = snac->id;
    116                 modsnac.subtype = snac->type;
    117                 modsnac.family = snac->family;
    118                 modsnac.flags = snac->flags;
    119 
    120                 for (cur = (aim_module_t *)sess->modlistv; cur; cur = cur->next)
    121                 {
    122                         if (!cur->snacdestructor)
    123                                 continue;
    124                         if (!(cur->flags & AIM_MODFLAG_MULTIFAMILY) &&
    125                                 (cur->family != modsnac.family))
    126                                 continue;
    127                         if (cur->snacdestructor(sess, d->conn, &modsnac,
    128                                                 d->data))
    129                                 break;
    130                 }
    131                 free(d->data);
    132         }
    133 
    134         free(snac->data);
    135         free(snac);
    136 }
    137 
    138 
    139104/*
    140105 * This is for cleaning up old SNACs that either don't get replies or
     
    144109 *
    145110 */
    146 faim_internal void aim_cleansnacs(aim_session_t *sess, int maxage)
     111faim_export void aim_cleansnacs(aim_session_t *sess, int maxage)
    147112{
    148113        int i;
     
    162127                                *prev = cur->next;
    163128
    164                                 aim_cleansnac(sess, cur);
     129                                free(cur->data);
     130                                free(cur);
    165131                        } else
    166132                                prev = &cur->next;
Note: See TracChangeset for help on using the changeset viewer.