Skip to content

Commit

Permalink
Check client and server mismatch
Browse files Browse the repository at this point in the history
Send client version as first parameter and check it at server start.

Signed-off-by: Yu-Chen Lin <[email protected]>
Signed-off-by: Romain Vimont <[email protected]>
  • Loading branch information
npes87184 authored and rom1v committed Nov 13, 2019
1 parent aa0f77c commit b963a3b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
1 change: 1 addition & 0 deletions app/src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ execute_server(struct server *server, const struct server_params *params) {
#endif
"/", // unused
"com.genymobile.scrcpy.Server",
SCRCPY_VERSION,
max_size_string,
bit_rate_string,
server->tunnel_forward ? "true" : "false",
Expand Down
26 changes: 18 additions & 8 deletions server/src/main/java/com/genymobile/scrcpy/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,29 +67,39 @@ public void run() {

@SuppressWarnings("checkstyle:MagicNumber")
private static Options createOptions(String... args) {
if (args.length != 6) {
throw new IllegalArgumentException("Expecting 6 parameters");
if (args.length < 1) {
throw new IllegalArgumentException("Missing client version");
}

String clientVersion = args[0];
if (!clientVersion.equals(BuildConfig.VERSION_NAME)) {
throw new IllegalArgumentException("The server version (" + clientVersion + ") does not match the client "
+ "(" + BuildConfig.VERSION_NAME + ")");
}

if (args.length != 7) {
throw new IllegalArgumentException("Expecting 7 parameters");
}

Options options = new Options();

int maxSize = Integer.parseInt(args[0]) & ~7; // multiple of 8
int maxSize = Integer.parseInt(args[1]) & ~7; // multiple of 8
options.setMaxSize(maxSize);

int bitRate = Integer.parseInt(args[1]);
int bitRate = Integer.parseInt(args[2]);
options.setBitRate(bitRate);

// use "adb forward" instead of "adb tunnel"? (so the server must listen)
boolean tunnelForward = Boolean.parseBoolean(args[2]);
boolean tunnelForward = Boolean.parseBoolean(args[3]);
options.setTunnelForward(tunnelForward);

Rect crop = parseCrop(args[3]);
Rect crop = parseCrop(args[4]);
options.setCrop(crop);

boolean sendFrameMeta = Boolean.parseBoolean(args[4]);
boolean sendFrameMeta = Boolean.parseBoolean(args[5]);
options.setSendFrameMeta(sendFrameMeta);

boolean control = Boolean.parseBoolean(args[5]);
boolean control = Boolean.parseBoolean(args[6]);
options.setControl(control);

return options;
Expand Down

0 comments on commit b963a3b

Please sign in to comment.