system-proxy: Accept CONNECT requests

This CL enables workers to process proxy CONNECT requests.
It extracts the url from the incoming request and sets up a
connection to the remote proxy using curl for
authentication.

BUG=chromium:1042626
TEST=unittests

Change-Id: Iebbed5a8229f17aa0f13fb2c7413e084bf276051
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2106136
Reviewed-by: Pavol Marko <pmarko@chromium.org>
Tested-by: Andreea-Elena Costinas <acostinas@google.com>
Commit-Queue: Andreea-Elena Costinas <acostinas@google.com>
diff --git a/system-proxy/curl_socket.cc b/system-proxy/curl_socket.cc
new file mode 100644
index 0000000..8182c02
--- /dev/null
+++ b/system-proxy/curl_socket.cc
@@ -0,0 +1,18 @@
+// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "system-proxy/curl_socket.h"
+
+#include <memory>
+#include <utility>
+
+namespace system_proxy {
+
+CurlSocket::CurlSocket(base::ScopedFD fd, ScopedCurlEasyhandle curl_easyhandle)
+    : arc_networkd::Socket(std::move(fd)),
+      curl_easyhandle_(std::move(curl_easyhandle)) {}
+
+CurlSocket::~CurlSocket() = default;
+
+}  // namespace system_proxy