@@ -402,31 +402,30 @@ void WebSocketsServer::handleHeader(WSclient_t * client) {
402
402
if (headerLine.startsWith (" GET " )) {
403
403
// cut URL out
404
404
client->cUrl = headerLine.substring (4 , headerLine.indexOf (' ' , 4 ));
405
- } else if (headerLine.startsWith (" Connection: " )) {
406
- // 12 = lenght of "Connection: "
407
- if (headerLine.indexOf (" Upgrade" , 12 )) {
408
- client->cIsUpgrade = true ;
409
- }
410
- } else if (headerLine.startsWith (" Upgrade: " )) {
411
- // 9 = lenght of "Upgrade: "
412
- String low = headerLine.substring (9 );
413
- low.toLowerCase ();
414
- if (low == " websocket" ) {
415
- client->cIsWebsocket = true ;
405
+ } else if (headerLine.indexOf (' :' )) {
406
+ String headerName = headerLine.substring (0 , headerLine.indexOf (' :' ));
407
+ String headerValue = headerLine.substring (headerLine.indexOf (' :' ) + 2 );
408
+
409
+ if (headerName.equalsIgnoreCase (" Connection" )) {
410
+ if (headerValue.indexOf (" Upgrade" ) >= 0 ) {
411
+ client->cIsUpgrade = true ;
412
+ }
413
+ } else if (headerName.equalsIgnoreCase (" Upgrade" )) {
414
+ if (headerValue.equalsIgnoreCase (" websocket" )) {
415
+ client->cIsWebsocket = true ;
416
+ }
417
+ } else if (headerName.equalsIgnoreCase (" Sec-WebSocket-Version" )) {
418
+ client->cVersion = headerValue.toInt ();
419
+ } else if (headerName.equalsIgnoreCase (" Sec-WebSocket-Key" )) {
420
+ client->cKey = headerValue;
421
+ client->cKey .trim (); // see rfc6455
422
+ } else if (headerName.equalsIgnoreCase (" Sec-WebSocket-Protocol" )) {
423
+ client->cProtocol = headerValue;
424
+ } else if (headerName.equalsIgnoreCase (" Sec-WebSocket-Extensions" )) {
425
+ client->cExtensions = headerValue;
416
426
}
417
- } else if (headerLine.startsWith (" Sec-WebSocket-Version: " )) {
418
- // 23 = lenght of "Sec-WebSocket-Version: "
419
- client->cVersion = headerLine.substring (23 ).toInt ();
420
- } else if (headerLine.startsWith (" Sec-WebSocket-Key: " )) {
421
- // 19 = lenght of "Sec-WebSocket-Key: "
422
- client->cKey = headerLine.substring (19 );
423
- client->cKey .trim (); // see rfc6455
424
- } else if (headerLine.startsWith (" Sec-WebSocket-Protocol: " )) {
425
- // 24 = lenght of "Sec-WebSocket-Protocol: "
426
- client->cProtocol = headerLine.substring (24 );
427
- } else if (headerLine.startsWith (" Sec-WebSocket-Extensions: " )) {
428
- // 26 = lenght of "Sec-WebSocket-Extensions: "
429
- client->cExtensions = headerLine.substring (26 );
427
+ } else {
428
+ DEBUG_WEBSOCKETS (" [WS-Client][handleHeader] Header error (%s)\n " , headerLine.c_str ());
430
429
}
431
430
432
431
} else {
0 commit comments