aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/protocol
diff options
context:
space:
mode:
authorBoris Grozev <boris@jitsi.org>2013-08-16 15:01:44 +0300
committerBoris Grozev <boris@jitsi.org>2013-08-16 15:24:07 +0300
commit186a6bc17b4b8d4fd6edc3d03c9878e3c10a9b32 (patch)
treee05d92b2c6c21d1ef938ae3fbd4055d1e0181323 /src/net/java/sip/communicator/impl/protocol
parent71b19959c5849bd46fe0cb734353c6af187ce435 (diff)
downloadjitsi-186a6bc17b4b8d4fd6edc3d03c9878e3c10a9b32.zip
jitsi-186a6bc17b4b8d4fd6edc3d03c9878e3c10a9b32.tar.gz
jitsi-186a6bc17b4b8d4fd6edc3d03c9878e3c10a9b32.tar.bz2
Fixes processing of content-modify (a regress introduced in the previous
commit)
Diffstat (limited to 'src/net/java/sip/communicator/impl/protocol')
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java55
1 files changed, 48 insertions, 7 deletions
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java
index 4c43f31..b4978d5 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerJabberImpl.java
@@ -136,7 +136,7 @@ public class CallPeerJabberImpl
.getTransportManager().wrapupConnectivityEstablishment();
answer = mediaHandler.generateSessionAccept();
for (ContentPacketExtension c : answer)
- setSenders(JingleUtils.getMediaType(c), c.getSenders());
+ setSenders(getMediaType(c), c.getSenders());
}
catch(Exception exc)
{
@@ -413,7 +413,7 @@ public class CallPeerJabberImpl
.getTransportManager().wrapupConnectivityEstablishment();
mediaHandler.processAnswer(contents);
for (ContentPacketExtension c : contents)
- setSenders(JingleUtils.getMediaType(c), c.getSenders());
+ setSenders(getMediaType(c), c.getSenders());
}
catch (Exception e)
{
@@ -536,7 +536,7 @@ public class CallPeerJabberImpl
getSID(),
answerContents);
for (ContentPacketExtension c : answerContents)
- setSenders(JingleUtils.getMediaType(c), c.getSenders());
+ setSenders(getMediaType(c), c.getSenders());
}
getProtocolProvider().getConnection().sendPacket(contentIQ);
@@ -576,6 +576,7 @@ public class CallPeerJabberImpl
public void processContentModify(JingleIQ content)
{
ContentPacketExtension ext = content.getContentList().get(0);
+ MediaType mediaType = getMediaType(ext);
try
{
@@ -584,9 +585,10 @@ public class CallPeerJabberImpl
!= null);
getMediaHandler().reinitContent(ext.getName(), ext, modify);
- setSenders(JingleUtils.getMediaType(ext), ext.getSenders());
- if (MediaType.VIDEO.toString().equals(ext.getName()))
+ setSenders(mediaType, ext.getSenders());
+
+ if (MediaType.VIDEO.equals(mediaType));
getCall().modifyVideoContent();
}
catch(Exception e)
@@ -649,7 +651,7 @@ public class CallPeerJabberImpl
{
mediaHandler.removeContent(c.getName());
- MediaType mediaType = JingleUtils.getMediaType(c);
+ MediaType mediaType = getMediaType(c);
setSenders(mediaType, SendersEnum.none);
if (MediaType.VIDEO.equals(mediaType))
@@ -698,7 +700,7 @@ public class CallPeerJabberImpl
.getTransportManager().wrapupConnectivityEstablishment();
mediaHandler.processAnswer(answer);
for (ContentPacketExtension c : answer)
- setSenders(JingleUtils.getMediaType(c), c.getSenders());
+ setSenders(getMediaType(c), c.getSenders());
}
catch(Exception exc)
{
@@ -1579,4 +1581,43 @@ public class CallPeerJabberImpl
else
throw new IllegalArgumentException("mediaType");
}
+
+ /**
+ * Gets the <tt>MediaType</tt> of <tt>content</tt>. If <tt>content</tt>
+ * does not have a <tt>description</tt> child and therefore not
+ * <tt>MediaType</tt> can be associated with it, tries to take the
+ * <tt>MediaType</tt> from the session's already established contents with
+ * the same name as <tt>content</tt>
+ * @param content the <tt>ContentPacketExtention</tt> for which to get the
+ * <tt>MediaType</tt>
+ * @return the <tt>MediaType</tt> of <tt>content</tt>.
+ */
+ public MediaType getMediaType (ContentPacketExtension content)
+ {
+ String contentName = content.getName();
+ if (contentName == null)
+ return null;
+
+ MediaType mediaType = JingleUtils.getMediaType(content);
+ if (mediaType == null)
+ {
+ CallPeerMediaHandlerJabberImpl mediaHandler = getMediaHandler();
+ for (MediaType m : MediaType.values())
+ {
+ ContentPacketExtension sessionContent
+ = mediaHandler.getRemoteContent(m.toString());
+ if (sessionContent == null)
+ sessionContent = mediaHandler.getLocalContent(m.toString());
+
+ if (sessionContent != null
+ && contentName.equals(sessionContent.getName()))
+ {
+ mediaType = m;
+ break;
+ }
+ }
+ }
+
+ return mediaType;
+ }
}