comparison src/protocols/msn/msnslp.c @ 6827:1cfbb731aa1f

[gaim-migrate @ 7372] Several fixes for attempted NULL pointer frees, and some MSNSLP fixes. Still not ready for use yet. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 14 Sep 2003 01:59:09 +0000
parents 8f228a7d5076
children a372cf34387e
comparison
equal deleted inserted replaced
6826:2adf21e70601 6827:1cfbb731aa1f
117 msn_message_set_flag(msg, 'D'); 117 msn_message_set_flag(msg, 'D');
118 msn_message_set_content_type(msg, "application/x-msnmsgrp2p"); 118 msn_message_set_content_type(msg, "application/x-msnmsgrp2p");
119 msn_message_set_attr(msg, "P2P-Dest", 119 msn_message_set_attr(msg, "P2P-Dest",
120 msn_user_get_passport(msn_message_get_receiver(msg))); 120 msn_user_get_passport(msn_message_get_receiver(msg)));
121 121
122 if (msg->msnslp_header.session_id == 0)
123 msg->msnslp_footer.app_id = 1;
124
122 msn_switchboard_send_msg(slpsession->swboard, msg); 125 msn_switchboard_send_msg(slpsession->swboard, msg);
123 } 126 }
124 127
125 void 128 void
126 msn_slp_session_request_user_display(MsnSlpSession *slpsession, 129 msn_slp_session_request_user_display(MsnSlpSession *slpsession,
129 const MsnObject *obj) 132 const MsnObject *obj)
130 { 133 {
131 MsnMessage *invite_msg; 134 MsnMessage *invite_msg;
132 char *msnobj_data; 135 char *msnobj_data;
133 char *msnobj_base64; 136 char *msnobj_base64;
137 char *branch;
138 char *call_id;
134 char *content; 139 char *content;
135 char *body; 140 char *body;
136 char *c; 141 char *c;
137 142
138 g_return_if_fail(slpsession != NULL); 143 g_return_if_fail(slpsession != NULL);
145 g_free(msnobj_data); 150 g_free(msnobj_data);
146 151
147 if ((c = strchr(msnobj_base64, '=')) != NULL) 152 if ((c = strchr(msnobj_base64, '=')) != NULL)
148 *c = '\0'; 153 *c = '\0';
149 154
150 if (slpsession->session_id == 0) 155 slpsession->session_id = rand() % 0xFFFFFF00 + 4;
151 slpsession->session_id = rand() % 0xFFFFFF00; 156
157 branch = g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
158 rand() % 0xAAFF + 0x1111,
159 rand() % 0xAAFF + 0x1111,
160 rand() % 0xAAFF + 0x1111,
161 rand() % 0xAAFF + 0x1111,
162 rand() % 0xAAFF + 0x1111,
163 rand() % 0xAAFF + 0x1111,
164 rand() % 0xAAFF + 0x1111,
165 rand() % 0xAAFF + 0x1111);
166
167 call_id = g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
168 rand() % 0xAAFF + 0x1111,
169 rand() % 0xAAFF + 0x1111,
170 rand() % 0xAAFF + 0x1111,
171 rand() % 0xAAFF + 0x1111,
172 rand() % 0xAAFF + 0x1111,
173 rand() % 0xAAFF + 0x1111,
174 rand() % 0xAAFF + 0x1111,
175 rand() % 0xAAFF + 0x1111);
152 176
153 content = g_strdup_printf( 177 content = g_strdup_printf(
154 "EUF-GUID: {A4268EEC-FEC5-49E5-95C3-F126696BDBF6}\r\n" 178 "EUF-GUID: {A4268EEC-FEC5-49E5-95C3-F126696BDBF6}\r\n"
155 "SessionID: %ld\r\n" 179 "SessionID: %ld\r\n"
156 "AppID: 1\r\n" 180 "AppID: 1\r\n"
162 186
163 body = g_strdup_printf( 187 body = g_strdup_printf(
164 "INVITE MSNMSGR:%s MSNSLP/1.0\r\n" 188 "INVITE MSNMSGR:%s MSNSLP/1.0\r\n"
165 "To: <msnmsgr:%s>\r\n" 189 "To: <msnmsgr:%s>\r\n"
166 "From: <msnmsgr:%s>\r\n" 190 "From: <msnmsgr:%s>\r\n"
167 "Via: MSNSLP/1.0/TLP ;branch={33517CE4-02FC-4428-B6F4-39927229B722}\r\n" 191 "Via: MSNSLP/1.0/TLP ;branch={%s}\r\n"
168 "CSeq: 0\r\n" 192 "CSeq: 0\r\n"
169 "Call-ID: {9D79AE57-1BD5-444B-B14E-3FC9BB2B5D58}\r\n" 193 "Call-ID: {%s}\r\n"
170 "Max-Forwards: 0\r\n" 194 "Max-Forwards: 0\r\n"
171 "Content-Type: application/x-msnmsgr-sessionreqbody\r\n" 195 "Content-Type: application/x-msnmsgr-sessionreqbody\r\n"
172 "Content-Length: %d\r\n" 196 "Content-Length: %d\r\n"
173 "\r\n" 197 "\r\n"
174 "%s" 198 "%s"
175 "\r\n\r\n", 199 "\r\n\r\n",
176 msn_user_get_passport(remote_user), 200 msn_user_get_passport(remote_user),
177 msn_user_get_passport(remote_user), 201 msn_user_get_passport(remote_user),
178 msn_user_get_passport(local_user), 202 msn_user_get_passport(local_user),
203 branch,
204 call_id,
179 strlen(content) + 5, 205 strlen(content) + 5,
180 content); 206 content);
181 207
182 g_free(content); 208 g_free(content);
209 g_free(branch);
210 g_free(call_id);
183 211
184 gaim_debug_misc("msn", "Message = {%s}\n", body); 212 gaim_debug_misc("msn", "Message = {%s}\n", body);
185 213
186 invite_msg = msn_message_new_msnslp(); 214 //invite_msg = msn_message_new_msnslp();
215 invite_msg = msn_message_new();
187 216
188 msn_message_set_sender(invite_msg, local_user); 217 msn_message_set_sender(invite_msg, local_user);
189 msn_message_set_receiver(invite_msg, remote_user); 218 msn_message_set_receiver(invite_msg, remote_user);
190 219
191 msn_message_set_body(invite_msg, body); 220 msn_message_set_body(invite_msg, body);