Change summary
src/main/java/eu/siacs/conversations/parser/AbstractParser.java | 2
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 3
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java | 4
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java | 8
4 files changed, 9 insertions(+), 8 deletions(-)
Detailed changes
@@ -126,7 +126,7 @@ public abstract class AbstractParser {
return user;
}
- public static String extractErrorMessage(Element packet) {
+ public static String extractErrorMessage(final Element packet) {
final Element error = packet.findChild("error");
if (error != null && error.getChildren().size() > 0) {
final List<String> errorNames = orderedElementNames(error.getChildren());
@@ -327,7 +327,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
}
if (id.startsWith(JingleRtpConnection.JINGLE_MESSAGE_PROCEED_ID_PREFIX)) {
final String sessionId = id.substring(JingleRtpConnection.JINGLE_MESSAGE_PROCEED_ID_PREFIX.length());
- mXmppConnectionService.getJingleConnectionManager().failProceed(account, from, sessionId);
+ final String message = extractErrorMessage(packet);
+ mXmppConnectionService.getJingleConnectionManager().failProceed(account, from, sessionId, message);
return true;
}
mXmppConnectionService.markMessage(account,
@@ -908,12 +908,12 @@ public class JingleConnectionManager extends AbstractConnectionManager {
}
}
- public void failProceed(Account account, final Jid with, String sessionId) {
+ public void failProceed(Account account, final Jid with, final String sessionId, final String message) {
final AbstractJingleConnection.Id id =
AbstractJingleConnection.Id.of(account, with, sessionId);
final AbstractJingleConnection existingJingleConnection = connections.get(id);
if (existingJingleConnection instanceof JingleRtpConnection) {
- ((JingleRtpConnection) existingJingleConnection).deliverFailedProceed();
+ ((JingleRtpConnection) existingJingleConnection).deliverFailedProceed(message);
}
}
@@ -797,7 +797,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
} catch (final WebRTCWrapper.InitializationException e) {
Log.d(Config.LOGTAG, id.account.getJid().asBareJid() + ": unable to initialize WebRTC");
webRTCWrapper.close();
- sendSessionTerminate(Reason.FAILED_APPLICATION);
+ sendSessionTerminate(Reason.FAILED_APPLICATION, e.getMessage());
return;
}
final org.webrtc.SessionDescription sdp =
@@ -928,10 +928,10 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
}
- void deliverFailedProceed() {
+ void deliverFailedProceed(final String message) {
Log.d(
Config.LOGTAG,
- id.account.getJid().asBareJid() + ": receive message error for proceed message");
+ id.account.getJid().asBareJid() + ": receive message error for proceed message ("+Strings.nullToEmpty(message)+")");
if (transition(State.TERMINATED_CONNECTIVITY_ERROR)) {
webRTCWrapper.close();
Log.d(
@@ -1270,7 +1270,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
webRTCWrapper.close();
final Reason reason = Reason.ofThrowable(throwable);
if (isInState(targetState)) {
- sendSessionTerminate(reason);
+ sendSessionTerminate(reason, throwable.getMessage());
} else {
sendRetract(reason);
}