Skip to content

Commit 79bb970

Browse files
julianTooTallNate
authored andcommitted
changed to only send extra bytes when needed. took out uneeded imports
1 parent d7a7d9c commit 79bb970

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

src/net/tootallnate/websocket/WebSocketClient.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public abstract class WebSocketClient implements Runnable, WebSocketListener {
4949
private int number2=0;
5050
/** Key3 used in handshake
5151
*/
52-
private byte[] key3;
52+
private byte[] key3=null;
5353
public static enum Draft{
5454
DRAFT75,
5555
DRAFT76
@@ -142,7 +142,6 @@ public void run() {
142142

143143
// Now send WebSocket client-side handshake
144144
Random r=new Random();
145-
this.key3=new byte[8];
146145
String path = "/" + uri.getPath();
147146
String host = uri.getHost() + (port != WebSocket.DEFAULT_PORT ? ":" + port : "");
148147
String origin = null; // TODO: Make 'origin' configurable
@@ -155,12 +154,15 @@ public void run() {
155154
{
156155
request+="Sec-WebSocket-Key1: " + this.generateKey() + "\r\n";
157156
request+="Sec-WebSocket-Key2: " + this.generateKey() + "\r\n";
157+
this.key3=new byte[8];
158158
r.nextBytes(this.key3);
159159
}
160160
//extraHeaders.toString() +
161161
request+="\r\n";
162162
conn.socketChannel().write(ByteBuffer.wrap(request.getBytes(WebSocket.UTF8_CHARSET)));
163-
conn.socketChannel().write(ByteBuffer.wrap(key3));
163+
if(this.key3 !=null){
164+
conn.socketChannel().write(ByteBuffer.wrap(this.key3));
165+
}
164166
}
165167

166168
// When 'conn' has recieved some data

src/net/tootallnate/websocket/WebSocketServer.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,11 @@
88
import java.nio.channels.SocketChannel;
99
import java.security.MessageDigest;
1010
import java.security.NoSuchAlgorithmException;
11-
import java.util.ArrayList;
12-
import java.util.Arrays;
13-
import java.util.Collection;
14-
import java.util.Collections;
1511
import java.util.Iterator;
1612
import java.util.Properties;
1713
import java.util.Set;
1814
import java.util.concurrent.CopyOnWriteArraySet;
1915

20-
import sun.misc.Regexp;
21-
2216
/**
2317
* <tt>WebSocketServer</tt> is an abstract class that only takes care of the
2418
* HTTP handshake portion of WebSockets. It's up to a subclass to add
@@ -293,7 +287,7 @@ public boolean onHandshakeRecieved(WebSocket conn, String handshake,byte[] key3)
293287
String key1=p.getProperty("Sec-WebSocket-Key1");
294288
String key2=p.getProperty("Sec-WebSocket-Key2");
295289
String headerPrefix="";
296-
byte[] responseChallenge=new byte[16];
290+
byte[] responseChallenge=null;
297291
switch (this.draft){
298292
case DRAFT75:
299293
if (key1 != null || key2 != null || key3 != null) {
@@ -348,7 +342,9 @@ public boolean onHandshakeRecieved(WebSocket conn, String handshake,byte[] key3)
348342
//Can not use UTF-8 here because we might lose bytes in response during conversion
349343
conn.socketChannel().write(ByteBuffer.wrap(responseHandshake.getBytes()));
350344
//Only set when Draft 76
351-
conn.socketChannel().write(ByteBuffer.wrap(responseChallenge));
345+
if(responseChallenge!=null){
346+
conn.socketChannel().write(ByteBuffer.wrap(responseChallenge));
347+
}
352348
return true;
353349
}
354350

0 commit comments

Comments
 (0)