Skip to content

Commit 1fe2671

Browse files
committed
exclusively disable compression ONLY for apple
Preparing before disaster happens. See Yonle/bostr2#3 Signed-off-by: Yonle <[email protected]>
1 parent 9c14cc9 commit 1fe2671

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

http.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,16 @@ if (
6868
server.isStandaloneHTTPS = false;
6969
}
7070

71-
const wss = new WebSocket.WebSocketServer({
71+
const wss_for_everyone = new WebSocket.WebSocketServer({
7272
noServer: true,
7373
perMessageDeflate: config.perMessageDeflate || false
7474
});
7575

76+
const wss_for_apple = new WebSocket.WebSocketServer({
77+
noServer: true,
78+
perMessageDeflate: false
79+
});
80+
7681
const favicon = fs.existsSync(config.favicon) ? fs.readFileSync(config.favicon) : null;
7782

7883
server.on('request', (req, res) => {
@@ -145,13 +150,20 @@ server.on('request', (req, res) => {
145150

146151
server.on('upgrade', (req, sock, head) => {
147152
const ip = req.headers["x-forwarded-for"]?.split(",")[0] || sock.address()?.address;
153+
const ua = req.headers["user-agent"]
154+
const isApple = ua?.length && (ua.includes("CFNetwork") || ua.includes("Safari")) && !ua.includes("Chrome") && !ua.includes("Firefox")
148155

149156
if (config.blocked_hosts && config.blocked_hosts.includes(ip)) return sock.destroy();
150157
if (connectedHosts.filter(i => i === ip).length >= (config.max_conn_per_ip || Infinity)) return sock.destroy();
151158

152159
connectedHosts.push(ip);
153160

154-
wss.handleUpgrade(req, sock, head, _ => bouncer.handleConnection(_, req, _ => delete connectedHosts[connectedHosts.indexOf(ip)]));
161+
let the_wss
162+
163+
if (isApple) the_wss = wss_for_apple;
164+
else the_wss = wss_for_everyone;
165+
166+
the_wss.handleUpgrade(req, sock, head, _ => bouncer.handleConnection(_, req, _ => delete connectedHosts[connectedHosts.indexOf(ip)]));
155167
});
156168

157169
const listened = server.listen(process.env.PORT || config.port, config.address || "0.0.0.0", _ => {

0 commit comments

Comments
 (0)