Skip to content

Commit 0f07cd8

Browse files
committed
Debug log for handshake reject
Help users debug TooTallNate#740 easier
1 parent 9918a55 commit 0f07cd8

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

src/main/java/org/java_websocket/drafts/Draft_6455.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,17 @@ public Draft_6455( List<IExtension> inputExtensions , List<IProtocol> inputProto
149149
@Override
150150
public HandshakeState acceptHandshakeAsServer( ClientHandshake handshakedata ) throws InvalidHandshakeException {
151151
int v = readVersion( handshakedata );
152-
if( v != 13 )
152+
if( v != 13 ) {
153+
logDebug("acceptHandshakeAsServer - Wrong websocket version.");
153154
return HandshakeState.NOT_MATCHED;
154-
HandshakeState extensionState= HandshakeState.NOT_MATCHED;
155+
}
156+
HandshakeState extensionState = HandshakeState.NOT_MATCHED;
155157
String requestedExtension = handshakedata.getFieldValue( "Sec-WebSocket-Extensions" );
156158
for( IExtension knownExtension : knownExtensions ) {
157159
if( knownExtension.acceptProvidedExtensionAsServer( requestedExtension ) ) {
158160
extension = knownExtension;
159161
extensionState = HandshakeState.MATCHED;
162+
logDebug("acceptHandshakeAsServer - Matching extension found: " + extension.toString());
160163
break;
161164
}
162165
}
@@ -166,36 +169,44 @@ public HandshakeState acceptHandshakeAsServer( ClientHandshake handshakedata ) t
166169
if( knownProtocol.acceptProvidedProtocol( requestedProtocol ) ) {
167170
protocol = knownProtocol;
168171
protocolState = HandshakeState.MATCHED;
172+
logDebug("acceptHandshakeAsServer - Matching protocol found: " + protocol.toString());
169173
break;
170174
}
171175
}
172176
if (protocolState == HandshakeState.MATCHED && extensionState == HandshakeState.MATCHED) {
173177
return HandshakeState.MATCHED;
174178
}
179+
logDebug("acceptHandshakeAsServer - No matching extension or protocol found.");
175180
return HandshakeState.NOT_MATCHED;
176181
}
177182

178183
@Override
179184
public HandshakeState acceptHandshakeAsClient( ClientHandshake request, ServerHandshake response ) throws InvalidHandshakeException {
180185
if (! basicAccept( response )) {
186+
logDebug("acceptHandshakeAsClient - Missing/wrong upgrade or connection in handshake.");
181187
return HandshakeState.NOT_MATCHED;
182188
}
183-
if( !request.hasFieldValue( "Sec-WebSocket-Key" ) || !response.hasFieldValue( "Sec-WebSocket-Accept" ) )
189+
if( !request.hasFieldValue( "Sec-WebSocket-Key" ) || !response.hasFieldValue( "Sec-WebSocket-Accept" ) ) {
190+
logDebug("acceptHandshakeAsClient - Missing Sec-WebSocket-Key or Sec-WebSocket-Accept");
184191
return HandshakeState.NOT_MATCHED;
192+
}
185193

186194
String seckey_answere = response.getFieldValue( "Sec-WebSocket-Accept" );
187195
String seckey_challenge = request.getFieldValue( "Sec-WebSocket-Key" );
188196
seckey_challenge = generateFinalKey( seckey_challenge );
189197

190-
if( !seckey_challenge.equals( seckey_answere ) )
198+
if( !seckey_challenge.equals( seckey_answere ) ) {
199+
logDebug("acceptHandshakeAsClient - Wrong key for Sec-WebSocket-Key.");
191200
return HandshakeState.NOT_MATCHED;
201+
}
192202

193203
HandshakeState extensionState= HandshakeState.NOT_MATCHED;
194204
String requestedExtension = response.getFieldValue( "Sec-WebSocket-Extensions" );
195205
for( IExtension knownExtension : knownExtensions ) {
196206
if( knownExtension.acceptProvidedExtensionAsClient( requestedExtension ) ) {
197207
extension = knownExtension;
198208
extensionState = HandshakeState.MATCHED;
209+
logDebug("acceptHandshakeAsClient - Matching extension found: " + extension.toString());
199210
break;
200211
}
201212
}
@@ -205,12 +216,14 @@ public HandshakeState acceptHandshakeAsClient( ClientHandshake request, ServerHa
205216
if( knownProtocol.acceptProvidedProtocol( requestedProtocol ) ) {
206217
protocol = knownProtocol;
207218
protocolState = HandshakeState.MATCHED;
219+
logDebug("acceptHandshakeAsClient - Matching protocol found: " + protocol.toString());
208220
break;
209221
}
210222
}
211223
if (protocolState == HandshakeState.MATCHED && extensionState == HandshakeState.MATCHED) {
212224
return HandshakeState.MATCHED;
213225
}
226+
logDebug("acceptHandshakeAsClient - No matching extension or protocol found.");
214227
return HandshakeState.NOT_MATCHED;
215228
}
216229

@@ -761,4 +774,10 @@ private ByteBuffer getPayloadFromByteBufferList() throws LimitExedeedException {
761774
resultingByteBuffer.flip();
762775
return resultingByteBuffer;
763776
}
777+
778+
private static void logDebug(Object object) {
779+
if (WebSocketImpl.DEBUG) {
780+
System.out.println(object);
781+
}
782+
}
764783
}

0 commit comments

Comments
 (0)