Allow FULL_SYNC and CHECKSUM broadcast

This commit is contained in:
MrLetsplay 2023-12-06 21:05:11 +01:00
parent 8fa23d9dff
commit 46738ab51a
Signed by: mr
SSH Key Fingerprint: SHA256:92jBH80vpXyaZHjaIl47pjRq+Yt7XGTArqQg1V7hSqg

View File

@ -84,6 +84,7 @@ public class ShareWSServer extends WebSocketServer {
SessionUser user = conn.getAttachment();
Session session = user.session();
boolean isHost = getHost(getPeers(session)).equals(conn);
switch(m.getType()) {
case CHANGE -> getPeers(session).forEach(peer -> send(peer, m));
case REQUEST_FULL_SYNC, REQUEST_CHECKSUM -> {
@ -96,10 +97,19 @@ public class ShareWSServer extends WebSocketServer {
send(getHost(getPeers(session)), m);
}
case FULL_SYNC, CHECKSUM -> {
if(!isHost) {
conn.close(CloseFrame.POLICY_VALIDATION, "Only host can send FULL_SYNC or CHECKSUM");
return;
}
AddressableMessage msg = (AddressableMessage) m;
if(msg.siteID() == AddressableMessage.BROADCAST_SITE_ID) {
getPeers(session).forEach(peer -> send(peer, m));
}else {
WebSocket peer = getPeer(getPeers(session), msg.siteID());
if(peer != null) send(peer, m);
}
}
default -> {
conn.close(CloseFrame.POLICY_VALIDATION, "Invalid message received");
}