handle disable_udp correctly for games

This commit is contained in:
Martin Michelsen
2022-09-02 23:44:41 -07:00
parent 010f753a08
commit b6d6474356
7 changed files with 23 additions and 15 deletions
+5 -1
View File
@@ -927,6 +927,7 @@ struct S_JoinGame {
// Note: The 64 command for PSO DC ends here (the next 4 fields are ignored).
// newserv sends them anyway for code simplicity reasons.
uint8_t episode;
// Similarly, PSO GC ignores the values in the following fields.
uint8_t unused2; // Should be 1 for PSO PC?
uint8_t solo_mode;
uint8_t unused3;
@@ -1018,7 +1019,9 @@ struct S_JoinLobby_XB_65_67_68 {
struct S_LeaveLobby_66_69_Ep3_E9 {
uint8_t client_id;
uint8_t leader_id;
le_uint16_t unused;
// Note: disable_udp only has an effect for games; it is unused for lobbies.
uint8_t disable_udp;
uint8_t unused;
};
// 67 (S->C): Join lobby
@@ -1448,6 +1451,7 @@ struct C_LoginExtended_PC_9D : C_Login_DC_PC_GC_9D {
// Not used on GC Episodes 1&2 Trial Edition.
// The extended version of this command is used in the same circumstances as
// when PSO PC uses the extended version of the 9D command.
// header.flag is 1 if the client has UDP disabled.
struct C_Login_GC_9E : C_Login_DC_PC_GC_9D {
union ClientConfigFields {
+1 -1
View File
@@ -672,7 +672,7 @@ void ProxyServer::LinkedSession::send_to_game_server(const char* error_message)
}
uint8_t leaving_id = x;
uint8_t leader_id = this->lobby_client_id;
S_LeaveLobby_66_69_Ep3_E9 cmd = {leaving_id, leader_id, 0};
S_LeaveLobby_66_69_Ep3_E9 cmd = {leaving_id, leader_id, 1, 0};
this->client_channel.send(0x69, leaving_id, &cmd, sizeof(cmd));
}
+10 -6
View File
@@ -39,10 +39,14 @@ const unordered_set<uint32_t> v2_crypt_initial_client_commands({
});
const unordered_set<uint32_t> v3_crypt_initial_client_commands({
0x00E000DB, // (17) GC/XB license check
0x00EC019E, // (02) GC login
0x0150019E, // (02) GC extended login
0x0130019E, // (02) XB login
0x0194019E, // (02) XB extended login
0x00EC009E, // (02) GC login
0x00EC019E, // (02) GC login (UDP off)
0x0150009E, // (02) GC extended login
0x0150019E, // (02) GC extended login (UDP off)
0x0130009E, // (02) XB login
0x0130019E, // (02) XB login (UDP off)
0x0194009E, // (02) XB extended login
0x0194019E, // (02) XB extended login (UDP off)
});
@@ -1229,12 +1233,12 @@ void send_player_join_notification(shared_ptr<Client> c,
}
void send_player_leave_notification(shared_ptr<Lobby> l, uint8_t leaving_client_id) {
S_LeaveLobby_66_69_Ep3_E9 cmd = {leaving_client_id, l->leader_id, 0};
S_LeaveLobby_66_69_Ep3_E9 cmd = {leaving_client_id, l->leader_id, 1, 0};
send_command_t(l, l->is_game() ? 0x66 : 0x69, leaving_client_id, cmd);
}
void send_self_leave_notification(shared_ptr<Client> c) {
S_LeaveLobby_66_69_Ep3_E9 cmd = {c->lobby_client_id, 0, 0};
S_LeaveLobby_66_69_Ep3_E9 cmd = {c->lobby_client_id, 0, 1, 0};
send_command_t(c, 0x69, c->lobby_client_id, cmd);
}
+2 -2
View File
@@ -31187,7 +31187,7 @@ I 80350 2022-07-07 23:27:19 - [Commands] Received from C-8 (NO DATA) (version=BB
0000 | 20 00 A0 00 00 00 00 00 00 00 01 00 5B 30 B0 21 | [0 !
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 80350 2022-07-07 23:27:19 - [Commands] Sending to C-8 (NO DATA) (version=BB command=0069 flag=00000000)
0000 | 0C 00 69 00 00 00 00 00 00 00 00 00 | i
0000 | 0C 00 69 00 00 00 00 00 00 00 01 00 | i
I 80350 2022-07-07 23:27:19 - [Commands] Sending to C-8 (NO DATA) (version=BB command=001A flag=00000000)
0000 | 0C 00 D5 00 00 00 00 00 00 00 00 00 |
I 80350 2022-07-07 23:27:19 - [Commands] Sending to C-8 (NO DATA) (version=BB command=0019 flag=00000000)
@@ -33757,7 +33757,7 @@ I 80350 2022-07-07 23:29:17 - [Commands] Received from C-A (NO DATA) (version=BB
0000 | 20 00 A0 00 00 00 00 00 00 00 01 00 5B 30 B0 21 | [0 !
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 80350 2022-07-07 23:29:17 - [Commands] Sending to C-A (NO DATA) (version=BB command=0069 flag=00000000)
0000 | 0C 00 69 00 00 00 00 00 00 00 00 00 | i
0000 | 0C 00 69 00 00 00 00 00 00 00 01 00 | i
I 80350 2022-07-07 23:29:17 - [Commands] Sending to C-A (NO DATA) (version=BB command=001A flag=00000000)
0000 | 0C 00 D5 00 00 00 00 00 00 00 00 00 |
I 80350 2022-07-07 23:29:17 - [Commands] Sending to C-A (NO DATA) (version=BB command=0019 flag=00000000)
+2 -2
View File
@@ -520,7 +520,7 @@ I 69775 2022-08-27 09:37:06 - [Commands] Received from C-3 (Tali) (version=DC co
0000 | A0 00 1C 00 00 00 01 00 77 77 77 77 00 00 00 00 | wwww
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=69 flag=00)
0000 | 69 00 08 00 00 00 00 00 | i
0000 | 69 00 08 00 00 00 01 00 | i
I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=1A flag=00)
0000 | 1A 00 08 00 00 00 00 00 |
I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=19 flag=00)
@@ -1612,7 +1612,7 @@ I 69775 2022-08-27 09:38:58 - [Commands] Received from C-5 (Tali) (version=DC co
0000 | A1 00 1C 00 00 00 01 00 77 77 77 77 00 00 00 00 | wwww
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=69 flag=00)
0000 | 69 00 08 00 00 00 00 00 | i
0000 | 69 00 08 00 00 00 01 00 | i
I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=1A flag=00)
0000 | 1A 00 08 00 00 00 00 00 |
I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=19 flag=00)
+1 -1
View File
@@ -1274,7 +1274,7 @@ I 70630 2022-08-27 09:46:29 - [Commands] Received from C-3 (Tali) (version=DC co
0000 | A0 00 1C 00 00 00 01 00 37 F2 62 4E 00 00 00 00 | 7 bN
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=69 flag=00)
0000 | 69 00 08 00 00 00 00 00 | i
0000 | 69 00 08 00 00 00 01 00 | i
I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=1A flag=00)
0000 | 1A 00 08 00 00 00 00 00 |
I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=19 flag=00)
+2 -2
View File
@@ -536,7 +536,7 @@ I 80820 2022-07-07 23:34:58 - [Commands] Received from C-3 (Kallea) (version=PC
I 80820 2022-07-07 23:35:00 - [Commands] Received from C-3 (Kallea) (version=PC command=84 flag=00)
0000 | 0C 00 84 00 33 00 00 33 01 00 00 00 | 3 3
I 80820 2022-07-07 23:35:00 - [Commands] Sending to C-3 (Kallea) (version=PC command=69 flag=00)
0000 | 08 00 69 00 00 00 00 00 | i
0000 | 08 00 69 00 00 00 01 00 | i
I 80820 2022-07-07 23:35:00 - [Commands] Sending to C-3 (Kallea) (version=PC command=67 flag=01)
0000 | 5C 04 67 01 00 00 01 00 01 00 00 00 00 00 00 00 | \ g
0010 | 00 00 01 00 78 62 F8 10 7F 00 00 01 00 00 00 00 | xb
@@ -2113,7 +2113,7 @@ I 80820 2022-07-07 23:37:10 - [Commands] Received from C-3 (Kallea) (version=PC
0000 | 1C 00 A0 00 00 00 01 00 78 62 F8 10 00 00 00 00 | xb
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 80820 2022-07-07 23:37:10 - [Commands] Sending to C-3 (Kallea) (version=PC command=69 flag=00)
0000 | 08 00 69 00 00 00 00 00 | i
0000 | 08 00 69 00 00 00 01 00 | i
I 80820 2022-07-07 23:37:10 - [Commands] Sending to C-3 (Kallea) (version=PC command=1A flag=00)
0000 | 08 00 1A 00 00 00 00 00 |
I 80820 2022-07-07 23:37:10 - [Commands] Sending to C-3 (Kallea) (version=PC command=19 flag=00)