MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / validateServerRequest

Method validateServerRequest

Libraries/Http/HttpWebSocket.cpp:431–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

429}
430
431HttpWebSocketHandshakeResult HttpWebSocketHandshake::validateServerRequest(
432 const HttpWebSocketServerHandshakeRequestView& request)
433{
434 HttpWebSocketHandshakeResult result;
435
436 if (request.method != HttpParser::Method::HttpGET or
437 not scHttpWebSocketEqualsIgnoreCase(request.version, "HTTP/1.1"))
438 {
439 result.status = HttpWebSocketHandshakeResult::Status::BadRequest;
440 return result;
441 }
442 if (not scHttpWebSocketEqualsIgnoreCase(scHttpWebSocketTrim(request.upgrade), "websocket"))
443 {
444 result.status = HttpWebSocketHandshakeResult::Status::BadRequest;
445 return result;
446 }
447 if (not headerContainsToken(request.connection, "Upgrade"))
448 {
449 result.status = HttpWebSocketHandshakeResult::Status::BadRequest;
450 return result;
451 }
452 if (not validateClientKey(scHttpWebSocketTrim(request.secWebSocketKey)))
453 {
454 result.status = HttpWebSocketHandshakeResult::Status::BadRequest;
455 return result;
456 }
457 if (request.secWebSocketVersion.isEmpty())
458 {
459 result.status = HttpWebSocketHandshakeResult::Status::BadRequest;
460 return result;
461 }
462 if (not scHttpWebSocketEqualsIgnoreCase(scHttpWebSocketTrim(request.secWebSocketVersion), "13"))
463 {
464 result.status = HttpWebSocketHandshakeResult::Status::UnsupportedVersion;
465 return result;
466 }
467
468 result.status = HttpWebSocketHandshakeResult::Status::Accepted;
469 return result;
470}
471
472HttpWebSocketHandshakeResult HttpWebSocketHandshake::validateServerRequest(
473 const HttpRequest& request, HttpWebSocketServerHandshakeRequestView* view)

Callers

nothing calls this directly

Calls 5

scHttpWebSocketTrimFunction · 0.85
getVersionMethod · 0.80
isEmptyMethod · 0.45
getHeaderMethod · 0.45

Tested by

no test coverage detected