Commit Graph
72 Commits
Author SHA1 Message Date
Manevolent 99ed8dda77 Use packet ID instead of key. 2018-08-13 20:30:50 -04:00
Manevolent d0e2ad194f It's possible for a packet's responsible queue to be incorrectly tracked. 2018-08-13 20:30:05 -04:00
Manevolent e4e1b5b4fe Still getting random connection losses. I think it may have to do with the way I set up ACK, ACK_LOW, and PING commands. 2018-08-13 18:18:49 -04:00
Manevolent f041820020 Catch socket exception for code clarity even though I dont think it was causing any problems 2018-08-13 09:58:55 -04:00
Manevolent ca869089cf Reconnection works now 2018-08-13 09:48:30 -04:00
Manevolent 89c483d3b9 Fragments which wrap around 65536 and cause the packet ID to ascend more than once will crash the code 2018-08-13 09:20:27 -04:00
Manevolent aad790c146 Packet reassembly would fail if the server sent packets out of order. Now, it is resilient to this. 2018-08-13 01:03:44 -04:00
Manevolent 7d195439b8 Send a zero-length byte array when the audio thread is done sending audio, as Teamspeak does. this is to prevent interpolation 2018-08-12 15:39:55 -04:00
Manevolent fb7923b63b Change HighPrecisionRecurrentTask to 0.01 instead of 0.02 2018-08-12 15:13:21 -04:00
Manevolent 9d37b982d5 Packet fragmentation had a bug 2018-08-12 15:07:49 -04:00
Manevolent 69024381de It would help if I pasted it after a packet has its ID assigned wouldn't it? 2018-08-12 12:45:27 -04:00
Manevolent 555f6a56d6 Mic packet ID was wrongly generated, changed some tests and increased verbosity of the reassembly exceptions 2018-08-12 12:14:29 -04:00
Manevolent bc37491328 Created a new test for fragments. If a packet fragment is received which wraps around the generation, it is lost. Also, packet fragmentation outgoing would cause a desync in the packet IDs. 2018-08-11 18:44:44 -04:00
Manevolent 04299b5c77 More tests for packet generations. Compression test also exists now to test compression into the future. QuickLZ first checks the level on decompression, and also throws a diagnostic error with full Base64 byte array on issue. Disconnections will actually fully reset and free the client for valid re-use. There is now a Consumer for Throwables for the abstract client socket for error handling. 2018-08-11 15:50:22 -04:00
Manevolent 5a440c890f Round ping to nearest whole number 2018-08-11 12:36:37 -04:00
Manevolent 2666e940e8 Undo debugging stuff 2018-08-10 23:38:07 -04:00
Manevolent 7f6f6c79d2 Bitmasks were wrong 2018-08-10 23:37:45 -04:00
Manevolent 798f84689f get rid of JavaFX 2018-08-10 22:46:03 -04:00
Manevolent a6a263cae1 get rid of JavaFX 2018-08-10 22:42:44 -04:00
Manevolent 7aa0f864a0 Handle throwable 2018-08-10 22:20:27 -04:00
Manevolent 83b2f5c46f Network reader should close if it has to exit 2018-08-10 22:20:03 -04:00
Manevolent 2f7b5a376b Facepalm, nanoTime 2018-08-10 19:56:53 -04:00
Manevolent d3a157672b More accurate ping and handling all packet types properly 2018-08-10 19:27:46 -04:00
Manevolent 844e3e6e75 More accurate ping and handling all packet types properly 2018-08-10 19:01:06 -04:00
Manevolent 4072b19f09 Fix total 2018-08-10 16:30:58 -04:00
Manevolent 99961d84aa notifyconnectioninforequest 2018-08-10 16:28:55 -04:00
Manevolent 3d09c5ef21 Disconnected and leave events were not on the proper handlers 2018-08-05 19:47:35 -04:00
Manevolent a316b76d70 Channel subscription, getting channel info, and multithreaded event handling 2018-08-05 19:20:02 -04:00
Manevolent fffd19cf9b Microphone changes 2018-08-05 02:21:33 -04:00
Manevolent 582daddf67 Microphone changes 2018-08-05 01:57:12 -04:00
Manevolent 68dcaa35c3 Microphone changes 2018-08-05 01:24:10 -04:00
Manevolent 836a952a6d Need actual byte length for characters 2018-08-05 00:58:21 -04:00
Manevolent e7beee972d Nickname changing 2018-08-05 00:17:02 -04:00
Manevolent 44edb80431 Nickname changing 2018-08-05 00:02:16 -04:00
Manevolent 0c2f4c0341 Must get client ID properly there 2018-08-04 23:58:34 -04:00
Manevolent 07ca284851 Client info call 2018-08-04 23:10:14 -04:00
Manevolent 95adfc6e3d Ignore compressed packets for voice, there is an issue 2018-08-04 23:01:03 -04:00
Manevolent a535724a4b Ignore compressed packets for voice, there is an issue 2018-08-04 22:38:44 -04:00
Manevolent 80a57784ef Any kind of proper acknowledgement constitutes an alive connection for 30 seconds. 2018-08-04 20:08:41 -04:00
Manevolent 7239f3f7ef Needed virtual server id 2018-08-04 19:31:51 -04:00
Manevolent 1ed4e0c4da Channel list event is back, adding chat to client commands. 2018-08-04 19:22:08 -04:00
Manevolent 1236221f6b Commands now spool sequentially. Command ACK queues no longer collide with pings or ack_low. Getter more stable. 2018-08-02 19:52:44 -04:00
Manevolent 964936abdf Working on commands, having trouble with acks right now 2018-08-01 16:29:31 -04:00
Manevolent 401f00c83d Added events that were needed 2018-08-01 12:46:14 -04:00
Manevolent f50ada0888 Working quickly to finish packet generation following. I've implemented my own counter now, using the same window system as the previous Java rewrite, using just an integer array and one array copy call. Hopefully this is good for performance.
Also, there was a breaking issue with the computeParameters() call that the test did not account for.  Once you reached packet ID 128, the encryption keys were all off.  This was due to the packet ID byte shifting: it worked for the first 127 bytes.  We can thank Java's lack of unsigned primitives, and a little bit of my own ignorance for that issue.

At this point, I believe all we need now are the clientQuery commands.  Several events must be added, and the responding commands must be typed out as well.  More to come.  Home stretch.
2018-08-01 12:27:09 -04:00
Manevolent 1bdffc8634 Update test 2018-07-31 16:30:22 -04:00
Manevolent 7b457c97c2 Possibly at the point where we can send audio into a channel now. 2018-07-31 16:19:05 -04:00
Manevolent 44a18ad7a0 Beginning to work on audio stuff now. Lots of changes. 2018-07-31 15:39:03 -04:00
Manevolent e93b0dee6f Moving more towards a serverquery look. 2018-07-30 16:32:50 -04:00
Manevolent f533e2e918 Moving further along with the connection-level commands that are received, and now have model objects to store variables. No callbacks to the server yet, but that will happen soon. Right now I have channel listings and basic client information done. 2018-07-28 22:34:18 -04:00