diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-03-26 17:20:59 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-03-26 17:20:59 -0400 |
commit | 48e2310d2d0f10b2107b91c2235c5ccc703008b6 (patch) | |
tree | accdfaed927d417be1da70bc316c0911f86b8797 | |
parent | 363d9e01e86f9390ea9e2217e0a28f9cd4ce8d86 (diff) |
Don't wait for codecs to publish Endpoint on incoming m=
We wait for the codecs to publish an Endpoint only if the candidates and
codecs have changed on an on-going call.
with-session-bus-30231.pid
-rw-r--r-- | rakia/sip-media.c | 6 | ||||
-rw-r--r-- | tests/twisted/voip/calltest.py | 18 |
2 files changed, 14 insertions, 10 deletions
diff --git a/rakia/sip-media.c b/rakia/sip-media.c index 14c867c..3e5e7b3 100644 --- a/rakia/sip-media.c +++ b/rakia/sip-media.c @@ -911,8 +911,10 @@ rakia_sip_media_set_remote_media (RakiaSipMedia *media, if (transport_changed) { /* Make sure we stop sending before we use the new set of codecs - * intended for the new connection */ - if (codecs_changed) + * intended for the new connection + * This only applies if we were already sending to somewhere else before. + */ + if (codecs_changed && old_media) { priv->push_candidates_on_new_codecs = TRUE; if (priv->remote_candidates != NULL) diff --git a/tests/twisted/voip/calltest.py b/tests/twisted/voip/calltest.py index 9af078c..f038d72 100644 --- a/tests/twisted/voip/calltest.py +++ b/tests/twisted/voip/calltest.py @@ -140,7 +140,12 @@ class CallTest: assertEquals([], smedia_props['STUNServers']) assertEquals([], smedia_props['RelayInfo']) assertEquals(True, smedia_props['HasServerInfo']) - assertEquals([], smedia_props['Endpoints']) + if incoming: + assertLength(1, smedia_props['Endpoints']) + self.check_endpoint(content, smedia_props['Endpoints'][0]) + + else: + assertEquals([], smedia_props['Endpoints']) assertEquals(False, smedia_props['ICERestartPending']) def get_md(self, content): @@ -200,13 +205,9 @@ class CallTest: cmedia_props['MediaDescriptionOffer'][0]) md.Accept(self.context.get_audio_md_dbus(self.remote_handle)) o = self.q.expect_many( - EventPattern('dbus-signal', signal='EndpointsChanged'), EventPattern('dbus-signal', signal='MediaDescriptionOfferDone'), EventPattern('dbus-signal', signal='LocalMediaDescriptionChanged'), EventPattern('dbus-signal', signal='RemoteMediaDescriptionsChanged')) - assertLength(1, o[0].args[0]) - assertEquals([], o[0].args[1]) - self.check_endpoint(content, o[0].args[0][0]) return content @@ -383,10 +384,12 @@ class CallTest: ack_cseq = "%s ACK" % self.invite_event.cseq.split()[0] del self.invite_event + events = self.content_dbus_signal_event('NewMediaDescriptionOffer') + \ + self.stream_dbus_signal_event('EndpointsChanged') o = self.q.expect_many( EventPattern('sip-ack', cseq=ack_cseq), # Call accepted - *self.content_dbus_signal_event('NewMediaDescriptionOffer')) + *events) for i in o: if i.type != 'dbus-signal' or \ @@ -397,8 +400,7 @@ class CallTest: o = self.q.expect_many( # Call accepted - EventPattern('dbus-signal', signal='CallStateChanged'), - *self.stream_dbus_signal_event('EndpointsChanged')) + EventPattern('dbus-signal', signal='CallStateChanged')) assertEquals(cs.CALL_STATE_ACCEPTED, o[0].args[0]) |