Made the invitation protocol symmetrical.

Both devices try to make outgoing connections and accept incoming
connections simultaneously. This should lead to faster connection
establishment when there are asymmetrical connectivity problems, such as
devices that are unable to receive LAN multicast packets or make
themselves discoverable via Bluetooth.
This commit is contained in:
akwizgran
2013-06-13 12:53:44 +01:00
parent bebaf4f84b
commit e1ec17f4b6
13 changed files with 52 additions and 161 deletions

View File

@@ -8,6 +8,7 @@ import java.util.Map;
import net.sf.briar.api.ContactId;
import net.sf.briar.api.TransportConfig;
import net.sf.briar.api.TransportProperties;
import net.sf.briar.api.crypto.PseudoRandom;
import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -35,23 +36,13 @@ public abstract class DuplexClientTest extends DuplexTest {
receiveChallengeSendResponse(d);
}
if(!plugin.supportsInvitations()) {
System.out.println("Skipping invitation tests");
System.out.println("Skipping invitation test");
return;
}
// Try to send an invitation
System.out.println("Sending invitation");
d = plugin.sendInvitation(getPseudoRandom(123), CONNECTION_TIMEOUT);
if(d == null) {
System.out.println("Connection failed");
return;
} else {
System.out.println("Connection created");
receiveChallengeSendResponse(d);
}
// Try to accept an invitation
System.out.println("Accepting invitation");
d = plugin.acceptInvitation(getPseudoRandom(456),
CONNECTION_TIMEOUT);
// Try to create an invitation connection
System.out.println("Creating invitation connection");
PseudoRandom r = getPseudoRandom(123);
d = plugin.createInvitationConnection(r, CONNECTION_TIMEOUT);
if(d == null) {
System.out.println("Connection failed");
return;

View File

@@ -33,23 +33,13 @@ public abstract class DuplexServerTest extends DuplexTest {
return;
}
if(!plugin.supportsInvitations()) {
System.out.println("Skipping invitation tests");
System.out.println("Skipping invitation test");
return;
}
// Try to accept an invitation
System.out.println("Accepting invitation");
DuplexTransportConnection d = plugin.acceptInvitation(
// Try to create an invitation connection
System.out.println("Creating invitation connection");
DuplexTransportConnection d = plugin.createInvitationConnection(
getPseudoRandom(123), CONNECTION_TIMEOUT);
if(d == null) {
System.out.println("Connection failed");
return;
} else {
System.out.println("Connection created");
sendChallengeReceiveResponse(d);
}
// Try to send an invitation
System.out.println("Sending invitation");
d = plugin.sendInvitation(getPseudoRandom(456), CONNECTION_TIMEOUT);
if(d == null) {
System.out.println("Connection failed");
return;