Esempio n. 1
0
static void process_info_cb(fetion_account *ses, const gchar *sipmsg)
{
	InfoType type;
	gchar sipuri[48], callid[48], seq[48], buf[BUFLEN], *sid;
	fetion_sip_parse_info(sipmsg, &type);
	if(type == INFO_NUDGE) {
		memset(callid, 0, sizeof(callid));
		memset(seq, 0, sizeof(seq));
		memset(sipuri, 0, sizeof(sipuri));

		snprintf(buf, sizeof(buf) -1, "SIP-C/4.0 200 OK\r\n"
					   "F: %s\r\n"
					   "I: %s \r\n"
					   "Q: %s\r\n\r\n",
					   sipuri , callid , seq);
		send(ses->sk, buf, strlen(buf), 0);
		sid = fetion_sip_get_sid_by_sipuri(sipuri);
		purple_prpl_got_attention(ses->gc, sid, FETION_NUDGE);
	}
}
Esempio n. 2
0
void
msn_datacast_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
{
	GHashTable *body;
	const char *id;
	body = msn_message_get_hashtable_from_body(msg);

	id = g_hash_table_lookup(body, "ID");

	if (!strcmp(id, "1")) {
		/* Nudge */
		PurpleAccount *account;
		const char *user;
		PurpleConnection *gc;

		account = cmdproc->session->account;
		user = msg->remote_user;
		gc = purple_account_get_connection(account);

		if (cmdproc->servconn->type == MSN_SERVCONN_SB) {
			MsnSwitchBoard *swboard = cmdproc->data;
			if (swboard->current_users > 1 ||
				((swboard->conv != NULL) &&
				 PURPLE_IS_CHAT_CONVERSATION(swboard->conv)))
				purple_prpl_got_attention_in_chat(gc, swboard->chat_id, user, MSN_NUDGE);

			else
				purple_prpl_got_attention(gc, user, MSN_NUDGE);
		} else {
			purple_prpl_got_attention(gc, user, MSN_NUDGE);
		}

	} else if (!strcmp(id, "2")) {
		/* Wink */
		MsnSession *session;
		MsnSlpLink *slplink;
		MsnObject *obj;
		const char *who;
		const char *data;

		session = cmdproc->session;

		data = g_hash_table_lookup(body, "Data");
		obj = msn_object_new_from_string(data);
		who = msn_object_get_creator(obj);

		slplink = msn_session_get_slplink(session, who);
		msn_slplink_request_object(slplink, data, got_wink_cb, NULL, obj);

		msn_object_destroy(obj, FALSE);


	} else if (!strcmp(id, "3")) {
		/* Voiceclip */
		MsnSession *session;
		MsnSlpLink *slplink;
		MsnObject *obj;
		const char *who;
		const char *data;

		session = cmdproc->session;

		data = g_hash_table_lookup(body, "Data");
		obj = msn_object_new_from_string(data);
		who = msn_object_get_creator(obj);

		slplink = msn_session_get_slplink(session, who);
		msn_slplink_request_object(slplink, data, got_voiceclip_cb, NULL, obj);

		msn_object_destroy(obj, FALSE);

	} else if (!strcmp(id, "4")) {
		/* Action */

	} else {
		purple_debug_warning("msn", "Got unknown datacast with ID %s.\n", id);
	}

	g_hash_table_destroy(body);
}