Fixed preservation of HTTP headers when using StartResponse
This commit is contained in:
parent
cf1200cab1
commit
1ca3775552
2 changed files with 8 additions and 6 deletions
|
@ -13,6 +13,12 @@ HTTP::Parser::Parser() {
|
||||||
|
|
||||||
/// Completely re-initializes the HTTP::Parser, leaving it ready for either reading or writing usage.
|
/// Completely re-initializes the HTTP::Parser, leaving it ready for either reading or writing usage.
|
||||||
void HTTP::Parser::Clean() {
|
void HTTP::Parser::Clean() {
|
||||||
|
CleanPreserveHeaders();
|
||||||
|
headers.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Completely re-initializes the HTTP::Parser, leaving it ready for either reading or writing usage.
|
||||||
|
void HTTP::Parser::CleanPreserveHeaders() {
|
||||||
seenHeaders = false;
|
seenHeaders = false;
|
||||||
seenReq = false;
|
seenReq = false;
|
||||||
getChunks = false;
|
getChunks = false;
|
||||||
|
@ -23,7 +29,6 @@ void HTTP::Parser::Clean() {
|
||||||
protocol = "HTTP/1.1";
|
protocol = "HTTP/1.1";
|
||||||
body.clear();
|
body.clear();
|
||||||
length = 0;
|
length = 0;
|
||||||
headers.clear();
|
|
||||||
vars.clear();
|
vars.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,13 +143,9 @@ void HTTP::Parser::SendResponse(std::string code, std::string message, Socket::C
|
||||||
/// \param conn The connection to send over.
|
/// \param conn The connection to send over.
|
||||||
void HTTP::Parser::StartResponse(std::string code, std::string message, HTTP::Parser & request, Socket::Connection & conn, bool bufferAllChunks) {
|
void HTTP::Parser::StartResponse(std::string code, std::string message, HTTP::Parser & request, Socket::Connection & conn, bool bufferAllChunks) {
|
||||||
std::string prot = request.protocol;
|
std::string prot = request.protocol;
|
||||||
std::string contentType = GetHeader("Content-Type");
|
|
||||||
sendingChunks = (!bufferAllChunks && protocol == "HTTP/1.1" && request.GetHeader("Connection")!="close");
|
sendingChunks = (!bufferAllChunks && protocol == "HTTP/1.1" && request.GetHeader("Connection")!="close");
|
||||||
Clean();
|
CleanPreserveHeaders();
|
||||||
protocol = prot;
|
protocol = prot;
|
||||||
if (contentType.size()){
|
|
||||||
SetHeader("Content-Type", contentType);
|
|
||||||
}
|
|
||||||
if (sendingChunks){
|
if (sendingChunks){
|
||||||
SetHeader("Transfer-Encoding", "chunked");
|
SetHeader("Transfer-Encoding", "chunked");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -35,6 +35,7 @@ namespace HTTP {
|
||||||
void Chunkify(const char * data, unsigned int size, Socket::Connection & conn);
|
void Chunkify(const char * data, unsigned int size, Socket::Connection & conn);
|
||||||
void Proxy(Socket::Connection & from, Socket::Connection & to);
|
void Proxy(Socket::Connection & from, Socket::Connection & to);
|
||||||
void Clean();
|
void Clean();
|
||||||
|
void CleanPreserveHeaders();
|
||||||
static std::string urlunescape(const std::string & in);
|
static std::string urlunescape(const std::string & in);
|
||||||
static std::string urlencode(const std::string & in);
|
static std::string urlencode(const std::string & in);
|
||||||
std::string body;
|
std::string body;
|
||||||
|
|
Loading…
Add table
Reference in a new issue