static void pn_send_login_uux (MsnSession *session) { MsnCmdProc *cmdproc; gchar *payload; const gchar *state_text; cmdproc = session->notification->cmdproc; payload = g_strdup_printf ("<EndpointData><Capabilities>%ld:0</Capabilities></EndpointData>", session->client_id); { MsnTransaction *trans; trans = msn_transaction_new (cmdproc, "UUX", "%d", strlen (payload)); msn_transaction_set_payload (trans, payload, strlen (payload)); msn_cmdproc_send_trans (cmdproc, trans); } g_free (payload); state_text = util_type_to_str (util_status_from_session (session)); payload = g_strdup_printf ("<PrivateEndpointData><EpName>msn-pecan</EpName><Idle>%s</Idle><ClientType>1</ClientType><State>%s</State></PrivateEndpointData>", strcmp (state_text, "ILN") == 0 ? "true" : "false", state_text); { MsnTransaction *trans; trans = msn_transaction_new (cmdproc, "UUX", "%d", strlen (payload)); msn_transaction_set_payload (trans, payload, strlen (payload)); msn_cmdproc_send_trans (cmdproc, trans); } g_free (payload); }
void pn_update_status (MsnSession *session) { MsnCmdProc *cmdproc; struct pn_contact *user; const gchar *state_text; int client_id; int caps; g_return_if_fail (session); if (!session->logged_in) return; user = msn_session_get_contact (session); cmdproc = session->notification->cmdproc; state_text = util_type_to_str (util_status_from_session (session)); caps = PN_CLIENT_CAP_BASE; #if defined(PECAN_CVR) caps |= PN_CLIENT_CAP_INK_GIF; #if defined(PECAN_LIBSIREN) caps |= PN_CLIENT_CAP_VOICE_CLIP; #endif #if defined(PECAN_LIBMSPACK) caps |= PN_CLIENT_CAP_WINKS; #endif #endif client_id = caps | (PN_CLIENT_VER_7_5 << 24); #if defined(PECAN_CVR) { struct pn_msnobj *obj; obj = pn_contact_get_object (user); if (obj) { gchar *msnobj_str; msnobj_str = pn_msnobj_to_string (obj); msn_cmdproc_send (cmdproc, "CHG", "%s %d %s", state_text, client_id, purple_url_encode (msnobj_str)); g_free (msnobj_str); } else { msn_cmdproc_send (cmdproc, "CHG", "%s %d", state_text, client_id); } } #else msn_cmdproc_send (cmdproc, "CHG", "%s %d", state_text, client_id); #endif /* defined(PECAN_CVR) */ }
void pn_update_status (MsnSession *session) { MsnCmdProc *cmdproc; struct pn_contact *user; const gchar *state_text; g_return_if_fail (session); if (!session->logged_in) return; user = msn_session_get_contact (session); cmdproc = session->notification->cmdproc; state_text = util_type_to_str (util_status_from_session (session)); #if defined(PECAN_CVR) { struct pn_msnobj *obj; obj = pn_contact_get_object (user); if (obj) { gchar *msnobj_str; msnobj_str = pn_msnobj_to_string (obj); msn_cmdproc_send (cmdproc, "CHG", "%s %ld %s", state_text, session->client_id, purple_url_encode (msnobj_str)); g_free (msnobj_str); } else { msn_cmdproc_send (cmdproc, "CHG", "%s %ld", state_text, session->client_id); } } #else msn_cmdproc_send (cmdproc, "CHG", "%s %ld", state_text, session->client_id); #endif /* defined(PECAN_CVR) */ pn_send_login_uux (session); }