comparison libpurple/protocols/jabber/google.c @ 26322:90c7f3e477b3

Use stream-info instead of state-changed for hangup and reject.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Sat, 21 Mar 2009 00:54:34 +0000
parents 007cd8dad384
children 51b986bbe260
comparison
equal deleted inserted replaced
26321:2c9fb8ac325b 26322:90c7f3e477b3
222 gchar *sid, gchar *name, GoogleSession *session) 222 gchar *sid, gchar *name, GoogleSession *session)
223 { 223 {
224 if (sid == NULL && name == NULL) { 224 if (sid == NULL && name == NULL) {
225 if (type == PURPLE_MEDIA_STATE_CHANGED_END) { 225 if (type == PURPLE_MEDIA_STATE_CHANGED_END) {
226 google_session_destroy(session); 226 google_session_destroy(session);
227 } else if (type == PURPLE_MEDIA_STATE_CHANGED_HANGUP) { 227 }
228 xmlnode *sess; 228 }
229 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); 229 }
230 230
231 xmlnode_set_attrib(iq->node, "to", session->remote_jid); 231 static void
232 sess = google_session_create_xmlnode(session, "terminate"); 232 google_session_stream_info_cb(PurpleMedia *media,
233 xmlnode_insert_child(iq->node, sess); 233 PurpleMediaStateChangedType type,
234 234 gchar *sid, gchar *name, GoogleSession *session)
235 jabber_iq_send(iq); 235 {
236 } else if (type == PURPLE_MEDIA_STATE_CHANGED_REJECTED) { 236 if (type == PURPLE_MEDIA_INFO_HANGUP) {
237 xmlnode *sess; 237 xmlnode *sess;
238 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET); 238 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
239 239
240 xmlnode_set_attrib(iq->node, "to", session->remote_jid); 240 xmlnode_set_attrib(iq->node, "to", session->remote_jid);
241 sess = google_session_create_xmlnode(session, "reject"); 241 sess = google_session_create_xmlnode(session, "terminate");
242 xmlnode_insert_child(iq->node, sess); 242 xmlnode_insert_child(iq->node, sess);
243 243
244 jabber_iq_send(iq); 244 jabber_iq_send(iq);
245 } 245 } else if (type == PURPLE_MEDIA_INFO_REJECT) {
246 246 xmlnode *sess;
247 JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
248
249 xmlnode_set_attrib(iq->node, "to", session->remote_jid);
250 sess = google_session_create_xmlnode(session, "reject");
251 xmlnode_insert_child(iq->node, sess);
252
253 jabber_iq_send(iq);
247 } 254 }
248 } 255 }
249 256
250 static GParameter * 257 static GParameter *
251 jabber_google_session_get_params(JabberStream *js, guint *num) 258 jabber_google_session_get_params(JabberStream *js, guint *num)
327 G_CALLBACK(google_session_ready), session); 334 G_CALLBACK(google_session_ready), session);
328 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", 335 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
329 G_CALLBACK(google_session_ready), session); 336 G_CALLBACK(google_session_ready), session);
330 g_signal_connect(G_OBJECT(session->media), "state-changed", 337 g_signal_connect(G_OBJECT(session->media), "state-changed",
331 G_CALLBACK(google_session_state_changed_cb), session); 338 G_CALLBACK(google_session_state_changed_cb), session);
339 g_signal_connect(G_OBJECT(session->media), "stream-info",
340 G_CALLBACK(google_session_stream_info_cb), session);
332 341
333 g_free(params); 342 g_free(params);
334 343
335 return session->media; 344 return session->media;
336 } 345 }
392 G_CALLBACK(google_session_ready), session); 401 G_CALLBACK(google_session_ready), session);
393 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed", 402 g_signal_connect_swapped(G_OBJECT(session->media), "codecs-changed",
394 G_CALLBACK(google_session_ready), session); 403 G_CALLBACK(google_session_ready), session);
395 g_signal_connect(G_OBJECT(session->media), "state-changed", 404 g_signal_connect(G_OBJECT(session->media), "state-changed",
396 G_CALLBACK(google_session_state_changed_cb), session); 405 G_CALLBACK(google_session_state_changed_cb), session);
406 g_signal_connect(G_OBJECT(session->media), "stream-info",
407 G_CALLBACK(google_session_stream_info_cb), session);
397 408
398 purple_media_codec_list_free(codecs); 409 purple_media_codec_list_free(codecs);
399 410
400 result = jabber_iq_new(js, JABBER_IQ_RESULT); 411 result = jabber_iq_new(js, JABBER_IQ_RESULT);
401 jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id")); 412 jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));