diff options
author | Boris Grozev <boris@jitsi.org> | 2013-08-16 15:01:44 +0300 |
---|---|---|
committer | Boris Grozev <boris@jitsi.org> | 2013-08-16 15:24:07 +0300 |
commit | 186a6bc17b4b8d4fd6edc3d03c9878e3c10a9b32 (patch) | |
tree | e05d92b2c6c21d1ef938ae3fbd4055d1e0181323 /src/net/java/sip/communicator/impl/protocol | |
parent | 71b19959c5849bd46fe0cb734353c6af187ce435 (diff) | |
download | jitsi-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.java | 55 |
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; + } } |