Provide methods that output error headers into the socket
Signed-off-by: Jan Dageförde <jan.dagefoerde@googlemail.com> Change-Id: Ia354248b824662fa4b47acee61ac444832eeb302
This commit is contained in:
parent
57bb7cb51d
commit
c543e44150
3 changed files with 69 additions and 0 deletions
|
@ -102,6 +102,7 @@ shared_sources = common/FileUtil.cpp \
|
|||
common/Util.cpp \
|
||||
common/Authorization.cpp \
|
||||
net/DelaySocket.cpp \
|
||||
net/HttpHelper.cpp \
|
||||
net/Socket.cpp
|
||||
if ENABLE_SSL
|
||||
shared_sources += net/Ssl.cpp
|
||||
|
@ -263,6 +264,7 @@ shared_headers = common/Common.hpp \
|
|||
common/SpookyV2.h \
|
||||
net/DelaySocket.hpp \
|
||||
net/FakeSocket.hpp \
|
||||
net/HttpHelper.hpp \
|
||||
net/ServerSocket.hpp \
|
||||
net/Socket.hpp \
|
||||
net/WebSocketHandler.hpp \
|
||||
|
|
41
net/HttpHelper.cpp
Normal file
41
net/HttpHelper.cpp
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "HttpHelper.hpp"
|
||||
|
||||
#include <Poco/MemoryStream.h>
|
||||
#include <Poco/Net/HTTPRequest.h>
|
||||
#include <Poco/Net/HTTPResponse.h>
|
||||
#include <common/Common.hpp>
|
||||
#include <common/Util.hpp>
|
||||
#include <net/Socket.hpp>
|
||||
|
||||
namespace HttpHelper
|
||||
{
|
||||
void sendError(int errorCode, const std::shared_ptr<StreamSocket>& socket, const std::string& body,
|
||||
const std::string& extraHeader)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << "HTTP/1.1 " << errorCode << "\r\n"
|
||||
<< "Date: " << Util::getHttpTimeNow() << "\r\n"
|
||||
<< "User-Agent: " << WOPI_AGENT_STRING << "\r\n"
|
||||
<< "Content-Length: " << body.size() << "\r\n"
|
||||
<< extraHeader << "\r\n"
|
||||
<< body;
|
||||
socket->send(oss.str());
|
||||
}
|
||||
|
||||
void sendErrorAndShutdown(int errorCode, const std::shared_ptr<StreamSocket>& socket,
|
||||
const std::string& body, const std::string& extraHeader)
|
||||
{
|
||||
sendError(errorCode, socket, body, extraHeader);
|
||||
socket->shutdown();
|
||||
}
|
||||
} // namespace HttpHelper
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
26
net/HttpHelper.hpp
Normal file
26
net/HttpHelper.hpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Socket.hpp"
|
||||
|
||||
namespace HttpHelper
|
||||
{
|
||||
/// Write headers and body for an error response.
|
||||
void sendError(int errorCode, const std::shared_ptr<StreamSocket>& socket,
|
||||
const std::string& body = std::string(),
|
||||
const std::string& extraHeader = std::string());
|
||||
|
||||
/// Write headers and body for an error response. Afterwards, shutdown the socket.
|
||||
void sendErrorAndShutdown(int errorCode, const std::shared_ptr<StreamSocket>& socket,
|
||||
const std::string& body = std::string(),
|
||||
const std::string& extraHeader = std::string());
|
||||
|
||||
} // namespace HttpHelper
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
Loading…
Reference in a new issue