comparison libpurple/protocols/msn/slpcall.c @ 31599:34da321b60f1

Try to hide all P2P fields away behind accessor functions.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Thu, 20 Jan 2011 06:43:45 +0000
parents 9ccbd0302bb2
children eb1bbaae3427
comparison
equal deleted inserted replaced
31598:19e89f916e69 31599:34da321b60f1
1057 msn_slp_process_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg) 1057 msn_slp_process_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
1058 { 1058 {
1059 MsnSlpCall *slpcall; 1059 MsnSlpCall *slpcall;
1060 const guchar *body; 1060 const guchar *body;
1061 gsize body_len; 1061 gsize body_len;
1062 guint32 session_id;
1063 guint32 flags;
1062 1064
1063 slpcall = NULL; 1065 slpcall = NULL;
1064 body = slpmsg->buffer; 1066 body = slpmsg->buffer;
1065 body_len = slpmsg->header->offset; 1067 body_len = msn_p2p_info_get_offset(slpmsg->p2p_info);
1066 1068
1067 if (slpmsg->header->flags == P2P_NO_FLAG || slpmsg->header->flags == P2P_WLM2009_COMP) 1069 session_id = msn_p2p_info_get_session_id(slpmsg->p2p_info);
1070 flags = msn_p2p_info_get_flags(slpmsg->p2p_info);
1071
1072 if (flags == P2P_NO_FLAG || flags == P2P_WLM2009_COMP)
1068 { 1073 {
1069 char *body_str; 1074 char *body_str;
1070 1075
1071 if (slpmsg->header->session_id == 64) 1076 if (session_id == 64)
1072 { 1077 {
1073 /* This is for handwritten messages (Ink) */ 1078 /* This is for handwritten messages (Ink) */
1074 GError *error = NULL; 1079 GError *error = NULL;
1075 gsize bytes_read, bytes_written; 1080 gsize bytes_read, bytes_written;
1076 1081
1123 body_str = g_strndup((const char *)body, body_len); 1128 body_str = g_strndup((const char *)body, body_len);
1124 slpcall = msn_slp_sip_recv(slplink, body_str); 1129 slpcall = msn_slp_sip_recv(slplink, body_str);
1125 } 1130 }
1126 g_free(body_str); 1131 g_free(body_str);
1127 } 1132 }
1128 else if (msn_p2p_msg_is_data(slpmsg->header->flags)) 1133 else if (msn_p2p_msg_is_data(flags))
1129 { 1134 {
1130 slpcall = msn_slplink_find_slp_call_with_session_id(slplink, slpmsg->header->session_id); 1135 slpcall = msn_slplink_find_slp_call_with_session_id(slplink, session_id);
1131 1136
1132 if (slpcall != NULL) 1137 if (slpcall != NULL)
1133 { 1138 {
1134 if (slpcall->timer) { 1139 if (slpcall->timer) {
1135 purple_timeout_remove(slpcall->timer); 1140 purple_timeout_remove(slpcall->timer);
1140 slpcall->cb(slpcall, body, body_len); 1145 slpcall->cb(slpcall, body, body_len);
1141 1146
1142 slpcall->wasted = TRUE; 1147 slpcall->wasted = TRUE;
1143 } 1148 }
1144 } 1149 }
1145 else if (slpmsg->header->flags == P2P_ACK) 1150 else if (flags == P2P_ACK)
1146 { 1151 {
1147 /* Acknowledgement of previous message. Don't do anything currently. */ 1152 /* Acknowledgement of previous message. Don't do anything currently. */
1148 } 1153 }
1149 else 1154 else
1150 purple_debug_warning("msn", "Unprocessed SLP message with flags 0x%04x\n", 1155 purple_debug_warning("msn", "Unprocessed SLP message with flags 0x%04x\n",
1151 slpmsg->header->flags); 1156 flags);
1152 1157
1153 return slpcall; 1158 return slpcall;
1154 } 1159 }