mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-10-13 15:29:46 +00:00
proto: keep cursor ids as strings in JS
A Windows peer before 1.5.0 names a cursor by its handle, sign-extended above 2^53 when its top bit is set. The web client decodes u64 fields into JS numbers, and ts-proto throws on a value a number cannot hold, so each such cursor_data or cursor_id was dropped whole and the web cursor stayed on the shape before. [jstype = JS_STRING] makes ts-proto generate these two fields as strings; the wire format, the Rust code generated and every other client are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EZ49AbZJYfm8NTp5yDPMab
This commit is contained in:
1 parent
d1f566a143
commit
a39fe47863
1 file changed
+4
-2
@@ -310,7 +310,9 @@ message KeyEvent {
|
||||
}
|
||||
|
||||
message CursorData {
|
||||
uint64 id = 1;
|
||||
// A string in JS: a Windows peer before 1.5.0 sends its cursor handle, sign-extended above
|
||||
// 2^53 when its top bit is set, which a JS number cannot hold.
|
||||
uint64 id = 1 [jstype = JS_STRING];
|
||||
sint32 hotx = 2;
|
||||
sint32 hoty = 3;
|
||||
int32 width = 4;
|
||||
@@ -1008,7 +1010,7 @@ message Message {
|
||||
AudioFrame audio_frame = 11;
|
||||
CursorData cursor_data = 12;
|
||||
CursorPosition cursor_position = 13;
|
||||
uint64 cursor_id = 14;
|
||||
uint64 cursor_id = 14 [jstype = JS_STRING]; // as CursorData.id
|
||||
KeyEvent key_event = 15;
|
||||
Clipboard clipboard = 16;
|
||||
FileAction file_action = 17;
|
||||
|
||||
Reference in new issue
Block a user