2017-04-26 18:20:59 -07:00
|
|
|
//
|
|
|
|
|
// Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
|
|
|
|
|
//
|
|
|
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
|
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#ifndef BEAST_WEBSOCKET_IMPL_RFC6455_IPP
|
|
|
|
|
#define BEAST_WEBSOCKET_IMPL_RFC6455_IPP
|
|
|
|
|
|
|
|
|
|
#include <beast/http/rfc7230.hpp>
|
|
|
|
|
|
|
|
|
|
namespace beast {
|
|
|
|
|
namespace websocket {
|
|
|
|
|
|
|
|
|
|
template<class Fields>
|
|
|
|
|
bool
|
|
|
|
|
is_upgrade(http::header<true, Fields> const& req)
|
|
|
|
|
{
|
|
|
|
|
if(req.version < 11)
|
|
|
|
|
return false;
|
2017-06-04 10:03:36 -07:00
|
|
|
if(req.method() != http::verb::get)
|
2017-04-26 18:20:59 -07:00
|
|
|
return false;
|
2017-06-07 05:00:18 -07:00
|
|
|
if(! http::token_list{req["Connection"]}.exists("upgrade"))
|
2017-04-26 18:20:59 -07:00
|
|
|
return false;
|
2017-06-05 19:28:17 -07:00
|
|
|
if(! http::token_list{req["Upgrade"]}.exists("websocket"))
|
2017-04-26 18:20:59 -07:00
|
|
|
return false;
|
2017-06-05 19:28:17 -07:00
|
|
|
if(! req.exists("Sec-WebSocket-Version"))
|
2017-04-26 18:20:59 -07:00
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // websocket
|
|
|
|
|
} // beast
|
|
|
|
|
|
|
|
|
|
#endif
|