Still getting random connection losses. I think it may have to do with the way I set up ACK, ACK_LOW, and PING commands.

This commit is contained in:
Manevolent
2018-08-13 18:18:49 -04:00
parent f041820020
commit e4e1b5b4fe
3 changed files with 91 additions and 84 deletions
@@ -351,7 +351,7 @@ public abstract class AbstractTeamspeakClientSocket
Pair<Integer, Integer> counter; Pair<Integer, Integer> counter;
switch (header.getType()) { switch (header.getType()) {
case ACK: /*case ACK:
counter = new Pair<>( counter = new Pair<>(
((PacketBody6Ack)packet.getBody()).getPacketId(), ((PacketBody6Ack)packet.getBody()).getPacketId(),
remoteSendCounter.get(PacketBodyType.ACK).getGeneration( remoteSendCounter.get(PacketBodyType.ACK).getGeneration(
@@ -374,7 +374,7 @@ public abstract class AbstractTeamspeakClientSocket
((PacketBody5Pong) packet.getBody()).getPacketId() ((PacketBody5Pong) packet.getBody()).getPacketId()
) )
); );
break; break;*/
case INIT1: case INIT1:
counter = new Pair<>(101, 0); counter = new Pair<>(101, 0);
break; break;
@@ -189,7 +189,7 @@ public class LocalTeamspeakClientSocket
header.read(buffer); header.read(buffer);
Ts3Debugging.debug("[NETWORK] READ" + Ts3Debugging.debug("[NETWORK] READ " + header.getType() +
" id=" + header.getPacketId() + " id=" + header.getPacketId() +
" len=" + packet.getLength() + " len=" + packet.getLength() +
" from " + packet.getSocketAddress()); " from " + packet.getSocketAddress());
@@ -214,10 +214,10 @@ public class LocalTeamspeakClientSocket
else if (remote == null) else if (remote == null)
throw new IOException(new NullPointerException("remote")); throw new IOException(new NullPointerException("remote"));
Ts3Debugging.debug("[NETWORK] WRITE id=" + packet.getHeader().getPacketId() + " len=" + Ts3Debugging.debug("[NETWORK] WRITE " + packet.getHeader().getType() +
packet.getDatagram().getLength() " id=" + packet.getHeader().getPacketId() +
+ " to " + " len=" + packet.getDatagram().getLength() +
remote.toString()); " to " + remote.toString());
packet.getDatagram().setSocketAddress(remote); packet.getDatagram().setSocketAddress(remote);
@@ -28,130 +28,137 @@ public class ServerConnectionTest {
identity.improveSecurity(10); identity.improveSecurity(10);
client.setIdentity(identity); client.setIdentity(identity);
client.setNickname("Hello from Java"); client.setNickname("Hello from Java");
client.setOption("client.hwid", "JAVAJAVAJAVA"); client.setOption("client.hwid", "JAVAJAVAJAVA");
client.connect( client.connect(
new InetSocketAddress( new InetSocketAddress(
"ts.teamlixo.net", "ts.teamlixo.net",
9987 9987
), ),
null, null,
10000L 10000L
); );
client.addListener(new TS3Listener() { client.addListener(new TS3Listener() {
@Override @Override
public void onTextMessage(TextMessageEvent e) { public void onTextMessage(TextMessageEvent e) {
} }
@Override @Override
public void onClientJoin(ClientJoinEvent e) { public void onClientJoin(ClientJoinEvent e) {
} }
@Override @Override
public void onClientLeave(ClientLeaveEvent e) { public void onClientLeave(ClientLeaveEvent e) {
} }
@Override @Override
public void onServerEdit(ServerEditedEvent e) { public void onServerEdit(ServerEditedEvent e) {
} }
@Override @Override
public void onChannelEdit(ChannelEditedEvent e) { public void onChannelEdit(ChannelEditedEvent e) {
} }
@Override @Override
public void onChannelDescriptionChanged(ChannelDescriptionEditedEvent e) { public void onChannelDescriptionChanged(ChannelDescriptionEditedEvent e) {
} }
@Override @Override
public void onClientMoved(ClientMovedEvent e) { public void onClientMoved(ClientMovedEvent e) {
} }
@Override @Override
public void onChannelCreate(ChannelCreateEvent e) { public void onChannelCreate(ChannelCreateEvent e) {
} }
@Override @Override
public void onChannelDeleted(ChannelDeletedEvent e) { public void onChannelDeleted(ChannelDeletedEvent e) {
} }
@Override @Override
public void onChannelMoved(ChannelMovedEvent e) { public void onChannelMoved(ChannelMovedEvent e) {
} }
@Override @Override
public void onChannelPasswordChanged(ChannelPasswordChangedEvent e) { public void onChannelPasswordChanged(ChannelPasswordChangedEvent e) {
} }
@Override @Override
public void onChannelList(ChannelListEvent e) { public void onChannelList(ChannelListEvent e) {
} }
@Override @Override
public void onPrivilegeKeyUsed(PrivilegeKeyUsedEvent e) { public void onPrivilegeKeyUsed(PrivilegeKeyUsedEvent e) {
} }
@Override @Override
public void onChannelGroupList(ChannelGroupListEvent e) { public void onChannelGroupList(ChannelGroupListEvent e) {
} }
@Override @Override
public void onServerGroupList(ServerGroupListEvent e) { public void onServerGroupList(ServerGroupListEvent e) {
} }
@Override @Override
public void onClientNeededPermissions(ClientNeededPermissionsEvent e) { public void onClientNeededPermissions(ClientNeededPermissionsEvent e) {
} }
@Override @Override
public void onClientChannelGroupChanged(ClientChannelGroupChangedEvent e) { public void onClientChannelGroupChanged(ClientChannelGroupChangedEvent e) {
} }
@Override @Override
public void onClientChanged(ClientUpdatedEvent e) { public void onClientChanged(ClientUpdatedEvent e) {
} }
@Override @Override
public void onDisconnected(DisconnectedEvent e) { public void onDisconnected(DisconnectedEvent e) {
} }
@Override @Override
public void onChannelSubscribed(ChannelSubscribedEvent e) { public void onChannelSubscribed(ChannelSubscribedEvent e) {
} }
}); });
assertEquals(client.getState(), ClientConnectionState.CONNECTED); assertEquals(client.getState(), ClientConnectionState.CONNECTED);
client.subscribeAll(); client.subscribeAll();
client.listClients(); try {
Thread.sleep(10000L); while (client.isConnected()) {
for (Client c : client.listClients()) {
client.getClientInfo(c.getId());
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
} }
} }