Example #1
0
static bool upgradeWebsocket(HttpServletRequest& req, HttpServletResponse& res)
{
	const char* ptr = req.getHeader("Connection");
	if (ptr == NULL)
		return false;
	if (acl_strcasestr(ptr, "Upgrade") == NULL)
		return false;
	ptr = req.getHeader("Upgrade");
	if (ptr == NULL)
		return false;
	if (strcasecmp(ptr, "websocket") != 0)
		return false;
	const char* key = req.getHeader("Sec-WebSocket-Key");
	if (key == NULL || *key == 0)
	{
		logger_warn("no Sec-WebSocket-Key");
		return false;
	}

	http_header& header = res.getHttpHeader();
	header.set_upgrade("websocket");
	header.set_ws_accept(key);
	return true;
}