if you look at this your mother will die in her sleep
This commit is contained in:
parent
47134fece3
commit
f238152970
3 changed files with 39 additions and 3 deletions
|
@ -30,12 +30,35 @@ int sosc::ScapeConnection::Handshake() {
|
|||
return SOSC_SHAKE_ERR;
|
||||
}
|
||||
|
||||
auto lines = str::split(this->buffer, "\r\n");
|
||||
|
||||
|
||||
if(!str::contains(this->buffer, "\r\n\r\n"))
|
||||
return SOSC_SHAKE_CONT;
|
||||
|
||||
std::string websocket_key = "";
|
||||
auto lines = str::split(this->buffer, "\r\n");
|
||||
for(auto line_r = lines.begin() + 1; line_r != lines.end(); ++line_r) {
|
||||
std::string line = str::trim(*line_r);
|
||||
|
||||
if(str::starts(line, "Sec-WebSocket-Key")) {
|
||||
auto parts = str::split(line, ':');
|
||||
if(parts.size() < 2)
|
||||
break;
|
||||
|
||||
websocket_key = str::trim(parts[1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(websocket_key == "") {
|
||||
this->Close();
|
||||
return SOSC_SHAKE_ERR;
|
||||
}
|
||||
|
||||
std::stringstream stream;
|
||||
stream << "HTTP/1.1 101 Switching Protocols\r\n"
|
||||
<< "Upgrade: websocket\r\n"
|
||||
<< "Connection: Upgrade\r\n"
|
||||
<< "Sec-WebSock";
|
||||
|
||||
this->handshaked = true;
|
||||
return SOSC_SHAKE_DONE;
|
||||
}
|
||||
|
|
|
@ -120,3 +120,13 @@ bool sosc::str::contains
|
|||
{
|
||||
return haystack.find(needle) != std::string::npos;
|
||||
}
|
||||
|
||||
std::string sosc::str::tolower(std::string str) {
|
||||
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
|
||||
return str;
|
||||
}
|
||||
|
||||
std::string* sosc::str::tolower(std::string* str) {
|
||||
std::transform(str->begin(), str->end(), str->begin(), ::tolower);
|
||||
return str;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,9 @@ bool starts(const std::string& str, const std::string& start);
|
|||
bool ends(const std::string& str, const std::string& end);
|
||||
|
||||
bool contains(const std::string& haystack, const std::string& needle);
|
||||
|
||||
std::string tolower(std::string str);
|
||||
std::string* tolower(std::string* str);
|
||||
}}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue