improved strategy for ignoring self addressed jingle messages
This commit is contained in:
parent
7b382d2ba5
commit
5eea961155
|
@ -92,8 +92,8 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 367
|
versionCode 368
|
||||||
versionName "2.8.0-alpha"
|
versionName "2.8.0-alpha.2"
|
||||||
archivesBaseName += "-$versionName"
|
archivesBaseName += "-$versionName"
|
||||||
applicationId "eu.siacs.conversations"
|
applicationId "eu.siacs.conversations"
|
||||||
resValue "string", "applicationId", applicationId
|
resValue "string", "applicationId", applicationId
|
||||||
|
|
|
@ -127,15 +127,17 @@ public class JingleConnectionManager extends AbstractConnectionManager {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final boolean carbonCopy = from.asBareJid().equals(account.getJid().asBareJid());
|
final boolean addressedToSelf = from.asBareJid().equals(account.getJid().asBareJid());
|
||||||
final Jid with;
|
final AbstractJingleConnection.Id id;
|
||||||
if (account.getJid().asBareJid().equals(from.asBareJid())) {
|
if (addressedToSelf) {
|
||||||
with = to;
|
if (to.isFullJid()) {
|
||||||
|
id = AbstractJingleConnection.Id.of(account, to, sessionId);
|
||||||
} else {
|
} else {
|
||||||
with = from;
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
id = AbstractJingleConnection.Id.of(account, from, sessionId);
|
||||||
}
|
}
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received jingle message from " + from + " with=" + with + " " + message);
|
|
||||||
final AbstractJingleConnection.Id id = AbstractJingleConnection.Id.of(account, with, sessionId);
|
|
||||||
final AbstractJingleConnection existingJingleConnection = connections.get(id);
|
final AbstractJingleConnection existingJingleConnection = connections.get(id);
|
||||||
if (existingJingleConnection != null) {
|
if (existingJingleConnection != null) {
|
||||||
if (existingJingleConnection instanceof JingleRtpConnection) {
|
if (existingJingleConnection instanceof JingleRtpConnection) {
|
||||||
|
@ -145,9 +147,9 @@ public class JingleConnectionManager extends AbstractConnectionManager {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (carbonCopy) {
|
|
||||||
|
if (addressedToSelf) {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": ignore jingle message from self");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": ignore jingle message from self");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("propose".equals(message.getName())) {
|
if ("propose".equals(message.getName())) {
|
||||||
|
@ -158,7 +160,7 @@ public class JingleConnectionManager extends AbstractConnectionManager {
|
||||||
final MessagePacket reject = mXmppConnectionService.getMessageGenerator().sessionReject(from, sessionId);
|
final MessagePacket reject = mXmppConnectionService.getMessageGenerator().sessionReject(from, sessionId);
|
||||||
mXmppConnectionService.sendMessagePacket(account, reject);
|
mXmppConnectionService.sendMessagePacket(account, reject);
|
||||||
} else {
|
} else {
|
||||||
final JingleRtpConnection rtpConnection = new JingleRtpConnection(this, id, with);
|
final JingleRtpConnection rtpConnection = new JingleRtpConnection(this, id, from);
|
||||||
this.connections.put(id, rtpConnection);
|
this.connections.put(id, rtpConnection);
|
||||||
rtpConnection.deliveryMessage(from, message);
|
rtpConnection.deliveryMessage(from, message);
|
||||||
}
|
}
|
||||||
|
@ -167,7 +169,7 @@ public class JingleConnectionManager extends AbstractConnectionManager {
|
||||||
}
|
}
|
||||||
} else if ("proceed".equals(message.getName())) {
|
} else if ("proceed".equals(message.getName())) {
|
||||||
|
|
||||||
final RtpSessionProposal proposal = new RtpSessionProposal(account, with.asBareJid(), sessionId);
|
final RtpSessionProposal proposal = new RtpSessionProposal(account, from.asBareJid(), sessionId);
|
||||||
synchronized (rtpSessionProposals) {
|
synchronized (rtpSessionProposals) {
|
||||||
if (rtpSessionProposals.remove(proposal) != null) {
|
if (rtpSessionProposals.remove(proposal) != null) {
|
||||||
final JingleRtpConnection rtpConnection = new JingleRtpConnection(this, id, account.getJid());
|
final JingleRtpConnection rtpConnection = new JingleRtpConnection(this, id, account.getJid());
|
||||||
|
@ -175,16 +177,16 @@ public class JingleConnectionManager extends AbstractConnectionManager {
|
||||||
rtpConnection.transitionOrThrow(AbstractJingleConnection.State.PROPOSED);
|
rtpConnection.transitionOrThrow(AbstractJingleConnection.State.PROPOSED);
|
||||||
rtpConnection.deliveryMessage(from, message);
|
rtpConnection.deliveryMessage(from, message);
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": no rtp session proposal found for " + with + " to deliver proceed");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": no rtp session proposal found for " + from + " to deliver proceed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ("reject".equals(message.getName())) {
|
} else if ("reject".equals(message.getName())) {
|
||||||
final RtpSessionProposal proposal = new RtpSessionProposal(account, with.asBareJid(), sessionId);
|
final RtpSessionProposal proposal = new RtpSessionProposal(account, from.asBareJid(), sessionId);
|
||||||
synchronized (rtpSessionProposals) {
|
synchronized (rtpSessionProposals) {
|
||||||
if (rtpSessionProposals.remove(proposal) != null) {
|
if (rtpSessionProposals.remove(proposal) != null) {
|
||||||
mXmppConnectionService.notifyJingleRtpConnectionUpdate(account, proposal.with, proposal.sessionId, RtpEndUserState.DECLINED_OR_BUSY);
|
mXmppConnectionService.notifyJingleRtpConnectionUpdate(account, proposal.with, proposal.sessionId, RtpEndUserState.DECLINED_OR_BUSY);
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": no rtp session proposal found for " + with + " to deliver reject");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": no rtp session proposal found for " + from + " to deliver reject");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue