# HG changeset patch # User Mike Ruprecht # Date 1237595669 0 # Node ID 2c9fb8ac325b0d46e1d1547cd03e0821eda310aa # Parent 8b4394e846336f62ff6d56126f1040ccedbe161f Use stream-info instead of state-changed for hangup and reject. diff -r 8b4394e84633 -r 2c9fb8ac325b libpurple/protocols/jabber/jingle/rtp.c --- a/libpurple/protocols/jabber/jingle/rtp.c Sat Mar 21 00:27:22 2009 +0000 +++ b/libpurple/protocols/jabber/jingle/rtp.c Sat Mar 21 00:34:29 2009 +0000 @@ -439,13 +439,22 @@ gchar *sid, gchar *name, JingleSession *session) { purple_debug_info("jingle-rtp", "state-changed: type %d id: %s name: %s\n", type, sid, name); +} - if ((type == PURPLE_MEDIA_STATE_CHANGED_REJECTED || - type == PURPLE_MEDIA_STATE_CHANGED_HANGUP) && - sid == NULL && name == NULL) { +static void +jingle_rtp_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type, + gchar *sid, gchar *name, JingleSession *session) +{ + purple_debug_info("jingle-rtp", "stream-info: type %d " + "id: %s name: %s\n", type, sid, name); + if (type == PURPLE_MEDIA_INFO_HANGUP) { jabber_iq_send(jingle_session_terminate_packet( session, "success")); g_object_unref(session); + } else if (type == PURPLE_MEDIA_INFO_REJECT) { + jabber_iq_send(jingle_session_terminate_packet( + session, "decline")); + g_object_unref(session); } } @@ -512,6 +521,8 @@ G_CALLBACK(jingle_rtp_codecs_changed_cb), session); g_signal_connect(G_OBJECT(media), "state-changed", G_CALLBACK(jingle_rtp_state_changed_cb), session); + g_signal_connect(G_OBJECT(media), "stream-info", + G_CALLBACK(jingle_rtp_stream_info_cb), session); g_object_unref(session); return media;