From 893e5cb16cee25108376bd4d9dd203bb99012975 Mon Sep 17 00:00:00 2001 From: cxl Date: Thu, 24 Oct 2013 17:33:11 +0000 Subject: [PATCH] Core: HttpRequest::KeepAlive (thanks Zbych!) git-svn-id: svn://ultimatepp.org/upp/trunk@6488 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Http.cpp | 3 ++- uppsrc/Core/Inet.h | 2 ++ uppsrc/Core/src.tpp/HttpRequest$en-us.tpp | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/uppsrc/Core/Http.cpp b/uppsrc/Core/Http.cpp index b10c0105f..668218dce 100644 --- a/uppsrc/Core/Http.cpp +++ b/uppsrc/Core/Http.cpp @@ -43,6 +43,7 @@ void HttpRequest::Init() force_digest = false; std_headers = true; hasurlvar = false; + keep_alive = false; method = METHOD_GET; phase = BEGIN; redirect_count = 0; @@ -520,7 +521,7 @@ void HttpRequest::StartRequest() if(std_headers) { data << "URL: " << url << "\r\n" << "Host: " << host_port << "\r\n" - << "Connection: close\r\n" + << "Connection: " << (keep_alive ? "keep-alive\r\n" : "close\r\n") << "Accept: " << Nvl(accept, "*/*") << "\r\n" << "Accept-Encoding: gzip\r\n" << "User-Agent: " << Nvl(agent, "U++ HTTP request") << "\r\n"; diff --git a/uppsrc/Core/Inet.h b/uppsrc/Core/Inet.h index e90f5a6a5..1ed91af7c 100644 --- a/uppsrc/Core/Inet.h +++ b/uppsrc/Core/Inet.h @@ -340,6 +340,7 @@ class HttpRequest : public TcpSocket { bool is_post; bool std_headers; bool hasurlvar; + bool keep_alive; String contenttype; String username; String password; @@ -455,6 +456,7 @@ public: HttpRequest& Accept(const String& a) { accept = a; return *this; } HttpRequest& UserAgent(const String& a) { agent = a; return *this; } HttpRequest& ContentType(const String& a) { contenttype = a; return *this; } + HttpRequest& KeepAlive(bool ka = true) { keep_alive = ka; return *this;} HttpRequest& Proxy(const String& host, int port) { proxy_host = host; proxy_port = port; return *this; } HttpRequest& Proxy(const char *p); diff --git a/uppsrc/Core/src.tpp/HttpRequest$en-us.tpp b/uppsrc/Core/src.tpp/HttpRequest$en-us.tpp index 28988004b..460cc95fa 100644 --- a/uppsrc/Core/src.tpp/HttpRequest$en-us.tpp +++ b/uppsrc/Core/src.tpp/HttpRequest$en-us.tpp @@ -294,6 +294,12 @@ HTTP request`". Returns `*this.&] ]_[* ContentType]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 a])&] [s2;%% Specifies `"Content`-Type`" HTTP request field. Returns `*this.&] [s3;%% &] +[s4; &] +[s5;:HttpRequest`:`:KeepAlive`(bool`): [_^HttpRequest^ HttpRequest][@(0.0.255) `&]_[* KeepA +live]([@(0.0.255) bool]_[*@3 ka]_`=_[@(0.0.255) true])&] +[s2;%% If active, `"Connection`" HTTP request field is `"keep`-alive`", +otherwise `"close`". Returns `*this.&] +[s3;%% &] [s4;%% &] [s5;:HttpRequest`:`:Proxy`(const String`&`,int`): [_^HttpRequest^ HttpRequest][@(0.0.255) `& ]_[* Proxy]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 host],