fixed destination calculation for direct socks candidates. fixes #3715

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java | 20 
1 file changed, 15 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java 🔗

@@ -58,12 +58,22 @@ public class JingleSocks5Transport extends JingleTransport {
         } else {
             destBuilder.append(this.connection.getTransportId());
         }
-        if (candidate.isOurs()) {
-            destBuilder.append(this.account.getJid());
-            destBuilder.append(this.connection.getId().with);
+        if (candidate.getType() == JingleCandidate.TYPE_PROXY) {
+            if (candidate.isOurs()) {
+                destBuilder.append(this.account.getJid());
+                destBuilder.append(this.connection.getId().with);
+            } else {
+                destBuilder.append(this.connection.getId().with);
+                destBuilder.append(this.account.getJid());
+            }
         } else {
-            destBuilder.append(this.connection.getId().with);
-            destBuilder.append(this.account.getJid());
+            if (connection.isInitiator()) {
+                destBuilder.append(this.account.getJid());
+                destBuilder.append(this.connection.getId().with);
+            } else {
+                destBuilder.append(this.connection.getId().with);
+                destBuilder.append(this.account.getJid());
+            }
         }
         messageDigest.reset();
         this.destination = CryptoHelper.bytesToHex(messageDigest.digest(destBuilder.toString().getBytes()));