summaryrefslogtreecommitdiff
path: root/src/HttpInitiateConnectionCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/HttpInitiateConnectionCommand.cc')
-rw-r--r--src/HttpInitiateConnectionCommand.cc31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/HttpInitiateConnectionCommand.cc b/src/HttpInitiateConnectionCommand.cc
index e94c39c9..f3cdc655 100644
--- a/src/HttpInitiateConnectionCommand.cc
+++ b/src/HttpInitiateConnectionCommand.cc
@@ -23,7 +23,9 @@
#include "HttpRequestCommand.h"
#include "HttpProxyRequestCommand.h"
#include "Util.h"
+#include "DlAbortEx.h"
#include "message.h"
+#include "prefs.h"
HttpInitiateConnectionCommand::HttpInitiateConnectionCommand(int cuid, Request* req, DownloadEngine* e):AbstractCommand(cuid, req, e) {}
@@ -35,12 +37,18 @@ bool HttpInitiateConnectionCommand::executeInternal(Segment segment) {
Command* command;
if(useProxy()) {
e->logger->info(MSG_CONNECTING_TO_SERVER, cuid,
- e->option->get("http_proxy_host").c_str(),
- e->option->getAsInt("http_proxy_port"));
- socket->establishConnection(e->option->get("http_proxy_host"),
- e->option->getAsInt("http_proxy_port"));
- command = new HttpProxyRequestCommand(cuid, req, e, socket);
-
+ e->option->get(PREF_HTTP_PROXY_HOST).c_str(),
+ e->option->getAsInt(PREF_HTTP_PROXY_PORT));
+ socket->establishConnection(e->option->get(PREF_HTTP_PROXY_HOST),
+ e->option->getAsInt(PREF_HTTP_PROXY_PORT));
+ if(useProxyTunnel()) {
+ command = new HttpProxyRequestCommand(cuid, req, e, socket);
+ } else if(useProxyGet()) {
+ command = new HttpRequestCommand(cuid, req, e, socket);
+ } else {
+ // TODO
+ throw new DlAbortEx("ERROR");
+ }
} else {
e->logger->info(MSG_CONNECTING_TO_SERVER, cuid, req->getHost().c_str(),
req->getPort());
@@ -52,6 +60,13 @@ bool HttpInitiateConnectionCommand::executeInternal(Segment segment) {
}
bool HttpInitiateConnectionCommand::useProxy() {
- return e->option->defined("http_proxy_enabled") &&
- e->option->get("http_proxy_enabled") == "true";
+ return e->option->get(PREF_HTTP_PROXY_ENABLED) == V_TRUE;
+}
+
+bool HttpInitiateConnectionCommand::useProxyGet() {
+ return e->option->get(PREF_HTTP_PROXY_METHOD) == V_GET;
+}
+
+bool HttpInitiateConnectionCommand::useProxyTunnel() {
+ return e->option->get(PREF_HTTP_PROXY_METHOD) == V_TUNNEL;
}