Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}