Compliance: Anti-proxy RTT check + tiered usage policy and disclaimer
Refine: Subtract server processing time from auth heartbeat RTT for proxy detection chore: add MIT LICENSE + remove RAT-named related project link
This commit is contained in:
@@ -1116,12 +1116,23 @@ typedef struct Heartbeat {
|
||||
} Heartbeat;
|
||||
|
||||
typedef struct HeartbeatACK {
|
||||
uint64_t Time;
|
||||
char Authorized;
|
||||
char IsTrail;
|
||||
char Authorization[200];
|
||||
char Reserved[814];
|
||||
uint64_t Time; // offset 0, size 8
|
||||
char Authorized; // offset 8
|
||||
char IsTrail; // offset 9
|
||||
char Authorization[200]; // offset 10, size 200 → 结束于 210
|
||||
// 显式 padding:让随后的 uint32_t ProcessingMs 落在 4 字节对齐边界(212)。
|
||||
// 不加这两个字节,编译器会自动补,但同时会把结构体尾部补到 8 字节对齐
|
||||
// 导致 sizeof 从 1024 涨到 1032,破坏跨版本兼容(新客户端连旧服务端会
|
||||
// 退回 OldSize=32 字节读取,丢失 Authorization)。
|
||||
char _ackPad[2]; // offset 210, size 2
|
||||
// 服务端处理本心跳的耗时(毫秒,由 server 写入 send-ACK 前一刻)。
|
||||
// 客户端用 (now - Time) - ProcessingMs 得到近似纯网络 RTT,喂给反代理检测。
|
||||
// 旧服务端 / 早期版本会把 ProcessingMs 留作 0,此时客户端按 0 = 未知,
|
||||
// 直接使用 (now - Time),不退化(与本字段加入前的行为完全一致)。
|
||||
uint32_t ProcessingMs; // offset 212, size 4 → 结束于 216
|
||||
char Reserved[808]; // offset 216, size 808 → 结束于 1024
|
||||
} HeartbeatACK;
|
||||
// sizeof(HeartbeatACK) == 1024(与本字段加入前完全相等)
|
||||
|
||||
#define HeartbeatACK_OldSize 32
|
||||
|
||||
|
||||
Reference in New Issue
Block a user