Beispiel #1
0
static void
rng_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
    MsnSession *session;
    MsnSwitchBoard *swboard;
    const char *session_id;
    char *host;
    int port;

    session = cmdproc->session;
    session_id = cmd->params[0];

    msn_parse_socket(cmd->params[1], &host, &port);

    swboard = msn_switchboard_new(session);

    msn_switchboard_set_invited(swboard, TRUE);
    msn_switchboard_set_session_id(swboard, cmd->params[0]);
    msn_switchboard_set_auth_key(swboard, cmd->params[3]);
    swboard->im_user = g_strdup(cmd->params[4]);
    /* msn_switchboard_add_user(swboard, cmd->params[4]); */

    if (!msn_switchboard_connect(swboard, host, port))
        msn_switchboard_destroy(swboard);

    g_free(host);
}
Beispiel #2
0
static void
xfr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
    char *host;
    int port;

    if (strcmp(cmd->params[1], "SB") && strcmp(cmd->params[1], "NS"))
    {
        /* Maybe we can have a generic bad command error. */
        pecan_error ("bad XFR command: params=[%s]", cmd->params[1]);
        return;
    }

    msn_parse_socket(cmd->params[2], &host, &port);

    if (!strcmp(cmd->params[1], "SB"))
    {
        pecan_error ("this shouldn't be handled here");
    }
    else if (!strcmp(cmd->params[1], "NS"))
    {
        MsnSession *session;

        session = cmdproc->session;

        msn_session_set_login_step(session, PECAN_LOGIN_STEP_TRANSFER);

        msn_notification_connect(session->notification, host, port);
    }

    g_free(host);
}
Beispiel #3
0
static void
got_swboard(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
	MsnSwitchBoard *swboard;
	char *host;
	int port;
	swboard = cmd->trans->data;

	if (g_list_find(cmdproc->session->switches, swboard) == NULL)
		/* The conversation window was closed. */
		return;

	msn_switchboard_set_auth_key(swboard, cmd->params[4]);

	msn_parse_socket(cmd->params[2], &host, &port);

	if (!msn_switchboard_connect(swboard, host, port))
		msn_switchboard_destroy(swboard);

	g_free(host);
}