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); } }
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); }