From 7ea8d981f15908829eb69c2d30e929276229f385 Mon Sep 17 00:00:00 2001 From: Mike Stewart Date: Tue, 5 Feb 2013 00:49:29 -0400 Subject: [PATCH 1/3] Create an SSL socket for https connections. Author: Mike Stewart --- .../com/codebutler/android_websockets/WebSocketClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/codebutler/android_websockets/WebSocketClient.java b/src/main/java/com/codebutler/android_websockets/WebSocketClient.java index d5e1b73..1c82336 100644 --- a/src/main/java/com/codebutler/android_websockets/WebSocketClient.java +++ b/src/main/java/com/codebutler/android_websockets/WebSocketClient.java @@ -72,7 +72,7 @@ public void run() { try { String secret = createSecret(); - int port = (mURI.getPort() != -1) ? mURI.getPort() : (mURI.getScheme().equals("wss") ? 443 : 80); + int port = (mURI.getPort() != -1) ? mURI.getPort() : ((mURI.getScheme().equals("wss") || mURI.getScheme().equals("https")) ? 443 : 80); String path = TextUtils.isEmpty(mURI.getPath()) ? "/" : mURI.getPath(); if (!TextUtils.isEmpty(mURI.getQuery())) { @@ -82,7 +82,7 @@ public void run() { String originScheme = mURI.getScheme().equals("wss") ? "https" : "http"; URI origin = new URI(originScheme, "//" + mURI.getHost(), null); - SocketFactory factory = mURI.getScheme().equals("wss") ? getSSLSocketFactory() : SocketFactory.getDefault(); + SocketFactory factory = (mURI.getScheme().equals("wss") || mURI.getScheme().equals("https")) ? getSSLSocketFactory() : SocketFactory.getDefault(); mSocket = factory.createSocket(mURI.getHost(), port); PrintWriter out = new PrintWriter(mSocket.getOutputStream()); From abb1134584ae6d9cf7a29d94ebea97dad852c498 Mon Sep 17 00:00:00 2001 From: Chris Peterson Date: Thu, 23 May 2013 12:52:27 -0700 Subject: [PATCH 2/3] Avoid mSocket NPE if WebSocketClient.disconnect() is called twice --- .../android_websockets/WebSocketClient.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/codebutler/android_websockets/WebSocketClient.java b/src/main/java/com/codebutler/android_websockets/WebSocketClient.java index 1c82336..342d379 100644 --- a/src/main/java/com/codebutler/android_websockets/WebSocketClient.java +++ b/src/main/java/com/codebutler/android_websockets/WebSocketClient.java @@ -160,12 +160,14 @@ public void disconnect() { mHandler.post(new Runnable() { @Override public void run() { - try { - mSocket.close(); + if (mSocket != null) { + try { + mSocket.close(); + } catch (IOException ex) { + Log.d(TAG, "Error while disconnecting", ex); + mListener.onError(ex); + } mSocket = null; - } catch (IOException ex) { - Log.d(TAG, "Error while disconnecting", ex); - mListener.onError(ex); } } }); From 3ba8dcba454de2338c32e41eefb4e06ed30eb195 Mon Sep 17 00:00:00 2001 From: joepadmiraal Date: Fri, 21 Jun 2013 13:42:35 +0200 Subject: [PATCH 3/3] Ping frame should not be encapsulated in binary frame. --- src/main/java/com/codebutler/android_websockets/HybiParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/codebutler/android_websockets/HybiParser.java b/src/main/java/com/codebutler/android_websockets/HybiParser.java index 31656f7..90a4f0c 100644 --- a/src/main/java/com/codebutler/android_websockets/HybiParser.java +++ b/src/main/java/com/codebutler/android_websockets/HybiParser.java @@ -241,7 +241,7 @@ private byte[] frame(Object data, int opcode, int errorCode) { } public void ping(String message) { - mClient.send(frame(message, OP_PING, -1)); + mClient.sendFrame(frame(message, OP_PING, -1)); } public void close(int code, String reason) {