From a74404609267140e695aac29631536eee9dbe187 Mon Sep 17 00:00:00 2001 From: Jake Esser Date: Mon, 13 Feb 2023 11:09:48 +0100 Subject: [PATCH 1/2] Fixed double Host issue and fixed added connection close for too large ping payload --- src/main/java/org/javawebstack/httpclient/HTTPClient.java | 2 +- .../java/org/javawebstack/httpclient/HTTPClientSocket.java | 2 -- .../org/javawebstack/httpclient/websocket/WebSocket.java | 6 +++++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/javawebstack/httpclient/HTTPClient.java b/src/main/java/org/javawebstack/httpclient/HTTPClient.java index 217139a..1e1b0f6 100644 --- a/src/main/java/org/javawebstack/httpclient/HTTPClient.java +++ b/src/main/java/org/javawebstack/httpclient/HTTPClient.java @@ -180,7 +180,7 @@ public WebSocket webSocket(String path, WebSocketHandler handler) throws IOExcep } public WebSocket webSocket(String path, WebSocketHandler handler, Map additionalHeaders) throws IOException { - HTTPClientSocket socket = new HTTPClientSocket(getBaseUrl() + ((path.startsWith("/") || path.startsWith("http://") || path.startsWith("https://")) ? "" : "/") + path, !isSSLVerification()); + HTTPClientSocket socket = new HTTPClientSocket(getBaseUrl() + ((path.startsWith("/") || path.startsWith("http://") || path.startsWith("https://") || path.startsWith("ws://") || path.startsWith("wss://")) ? "" : "/") + path, !isSSLVerification()); if(additionalHeaders != null) additionalHeaders.forEach(socket::setRequestHeader); WebSocket webSocket = new WebSocket(socket, handler); diff --git a/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java b/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java index 786dd57..560d6a1 100644 --- a/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java +++ b/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java @@ -133,8 +133,6 @@ private void writeHeaders() throws IOException { .append(" ") .append(requestPath) .append(" HTTP/1.1\nHost: ") - .append(host) - .append("\r\nHost: ") .append(host); sb.append("\r\n"); requestHeaders.forEach((k, values) -> values.forEach(v -> sb.append(k).append(": ").append(v).append("\r\n"))); diff --git a/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java b/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java index 9e37c32..a1d95ef 100644 --- a/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java +++ b/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java @@ -54,7 +54,11 @@ public void run() { socket.close(); break; case WebSocketFrame.OP_PING: - frame.setOpcode(WebSocketFrame.OP_PONG).setMaskKey().write(socket.getOutputStream()); + if (frame.getPayload().length > 125) { + close(1002, "Protocol Error"); + } else { + frame.setOpcode(WebSocketFrame.OP_PONG).setMaskKey().write(socket.getOutputStream()); + } break; case WebSocketFrame.OP_BINARY: handler.onMessage(this, frame.getPayload()); From 4d4bb300e8473dbed687f56a9f6e3b0df2fc1e4b Mon Sep 17 00:00:00 2001 From: Jake Esser Date: Tue, 4 Apr 2023 12:05:23 +0200 Subject: [PATCH 2/2] Added Cookie to websocket connection --- src/main/java/org/javawebstack/httpclient/HTTPClient.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/javawebstack/httpclient/HTTPClient.java b/src/main/java/org/javawebstack/httpclient/HTTPClient.java index 1e1b0f6..6429d23 100644 --- a/src/main/java/org/javawebstack/httpclient/HTTPClient.java +++ b/src/main/java/org/javawebstack/httpclient/HTTPClient.java @@ -183,6 +183,13 @@ public WebSocket webSocket(String path, WebSocketHandler handler, Map reqCookies = new ArrayList<>(); + for(HttpCookie cookie : defaultCookies) + reqCookies.add(cookie.getName()+"="+cookie.getValue()); + if (reqCookies.size() > 0) + socket.setRequestHeader("Cookie", String.join("; ", reqCookies)); + WebSocket webSocket = new WebSocket(socket, handler); new Thread(webSocket).start(); return webSocket;