static int irc_internal_disconnect(irc_conn_t *c, const int error) { struct s_irc_whois *whois_iter, *whois_iter2; if (c->nickname != NULL) { free(c->nickname); c->nickname = NULL; } if (c->password != NULL) { free(c->password); c->password = NULL; } for (whois_iter = c->whois_head; whois_iter != NULL; whois_iter = whois_iter2) { whois_iter2 = whois_iter->next; if (whois_iter->nickname != NULL) { free(whois_iter->nickname); whois_iter->nickname = NULL; } if (whois_iter->info != NULL) { free(whois_iter->info); whois_iter->info = NULL; } free(whois_iter); } c->whois_head = NULL; c->passchange = 0; c->usesilence = 1; c->identified = 0; firetalk_callback_disconnect(c, error); return(FE_SUCCESS); }
static int oscar_internal_disconnect(struct s_oscar_connection * const c, const int error) { close(c->s); free(c); firetalkerror = error; firetalk_callback_disconnect(c,error); firetalkerror = FE_SUCCESS; return FE_SUCCESS; }