Beispiel #1
0
/* PROTO */
void
input_quit(char *arg)
{
    struct ConnPtr *trav, *temp;

    restore_tty();

    if (conn->otr) {
        printf("\n");
        otr_cleanup();
    }

    log_buddies_offline();

    imcomm_delete_handle_now(conn->conn);

    if (conn->clist->conn == conn->conn) {
        temp = conn->clist;
        conn->clist = conn->clist->next;

        if (temp->username)
            free(temp->username);

        free(temp);
    } else {
        for (trav = conn->clist; trav->next;) {
            if (trav->next->conn == conn->conn) {
                temp = trav->next;
                trav->next = trav->next->next;

                if (temp->username)
                    free(temp->username);

                free(temp);
            }
        }
    }

    delete_buddylist(buddylist);

    if (conn->username)
        free(conn->username);

    if (conn->password)
        free(conn->password);

    if (conn->awaymsg)
        free(conn->awaymsg);

    if (conn->lastsn)
        free(conn->lastsn);

    free(conn);

    printf("\n");

    exit(0);
}
Beispiel #2
0
status_t
AIMProtocol::LogOff()
{
	fOnline = false;
	imcomm_delete_handle_now(fIMCommHandle);
	BString content(fUsername);
	content << " has logged out!";
	_Notify(B_INFORMATION_NOTIFICATION, "Disconnected",
			content.String());

	return B_OK;
}
Beispiel #3
0
/* PROTO */
void
input_reconnect(char *arg)
{
	struct ConnPtr *temp, *trav;

	eraseline();
	b_echostr_s();

	if (conn->timestamps) {
		addts();
		putchar(' ');
	}
	if (arg[0] != '\0') {
		if (conn->username) {
			free(conn->username);
			conn->username = NULL;
		}
		if (conn->password) {
			free(conn->password);
			conn->password = NULL;
		}
		printf("Reconnecting as %s...\n", arg);

		conn->username = strdup(arg);
		b_getpassword();
	} else {
		printf("Reconnecting...\n");
	}

	if (conn->conn != NULL) {

		delete_buddylist(buddylist);

		buddylist = NULL;
		conn->buddiesonline = 0;

		if (conn->clist->conn == conn->conn) {
			temp = conn->clist;
			conn->clist = conn->clist->next;
			if (temp->username)
				free(temp->username);

			free(temp);
		} else {
			for (trav = conn->clist; trav->next;) {
				if (trav->next->conn == conn->conn) {
					temp = trav->next;
					trav->next = trav->next->next;

					if (temp->username)
						free(temp->username);

					free(temp);
				}
			}
		}

		imcomm_delete_handle_now(conn->conn);

		conn->conn = NULL;
	}
	create_new_connection();

	if (conn->proxytype != PROXY_TYPE_NONE) {
		imcomm_set_proxy(conn->clist->conn, conn->proxytype, conn->proxy,
				 (uint16_t) conn->proxyport);
	}
	if (conn->oscarport != 0) {
		imcomm_set_oscar_port(conn->clist->conn, conn->oscarport);
	}
	imcomm_im_signon(conn->clist->conn, conn->username, conn->password);
	conn->conn = conn->clist->conn;

	if (conn->isaway)
		imcomm_set_away(conn->conn, conn->awaymsg);
}