mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
Fix bugs in websocket
- `Upgrade: websocket` should be case-insensitive - Using network byte order for length field
This commit is contained in:
parent
806ef51092
commit
7af78aff5a
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
#include "socket_adaptors.h"
|
#include "socket_adaptors.h"
|
||||||
#include "http_request.h"
|
#include "http_request.h"
|
||||||
#include "TinySHA1.hpp"
|
#include "TinySHA1.hpp"
|
||||||
@ -41,7 +42,7 @@ namespace crow
|
|||||||
std::function<void(crow::websocket::connection&)> error_handler)
|
std::function<void(crow::websocket::connection&)> error_handler)
|
||||||
: adaptor_(std::move(adaptor)), open_handler_(std::move(open_handler)), message_handler_(std::move(message_handler)), close_handler_(std::move(close_handler)), error_handler_(std::move(error_handler))
|
: adaptor_(std::move(adaptor)), open_handler_(std::move(open_handler)), message_handler_(std::move(message_handler)), close_handler_(std::move(close_handler)), error_handler_(std::move(error_handler))
|
||||||
{
|
{
|
||||||
if (req.get_header_value("upgrade") != "websocket")
|
if (!boost::iequals(req.get_header_value("upgrade"), "websocket"))
|
||||||
{
|
{
|
||||||
adaptor.close();
|
adaptor.close();
|
||||||
delete this;
|
delete this;
|
||||||
@ -131,13 +132,13 @@ namespace crow
|
|||||||
else if (size < 0x10000)
|
else if (size < 0x10000)
|
||||||
{
|
{
|
||||||
buf[1] += 126;
|
buf[1] += 126;
|
||||||
*(uint16_t*)(buf+2) = (uint16_t)size;
|
*(uint16_t*)(buf+2) = htons((uint16_t)size);
|
||||||
return {buf, buf+4};
|
return {buf, buf+4};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buf[1] += 127;
|
buf[1] += 127;
|
||||||
*(uint64_t*)(buf+2) = (uint64_t)size;
|
*(uint64_t*)(buf+2) = ((1==htonl(1)) ? (uint64_t)size : ((uint64_t)htonl((size) & 0xFFFFFFFF) << 32) | htonl((size) >> 32));
|
||||||
return {buf, buf+10};
|
return {buf, buf+10};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user