summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/web_socket_proxy.h
diff options
context:
space:
mode:
authordilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-10 16:48:44 +0000
committerdilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-10 16:48:44 +0000
commit2d14b373ac9ef900b12160ba64bafdcc0530f1dc (patch)
tree52e15b1f248599722f3d29cc4a4a5ee894e5fe65 /chrome/browser/chromeos/web_socket_proxy.h
parent658e883290c87808964c8fe245a4755c67b98eab (diff)
downloadchromium_src-2d14b373ac9ef900b12160ba64bafdcc0530f1dc.zip
chromium_src-2d14b373ac9ef900b12160ba64bafdcc0530f1dc.tar.gz
chromium_src-2d14b373ac9ef900b12160ba64bafdcc0530f1dc.tar.bz2
Websocket to TCP proxy running in a separate thread (only on ChromeOS).
With this webproxy: authorized extensions can connect to ws://127.0.0.1:10101/tcpproxy, pass authorization_token:hostname:port: in first frame, then webproxy establishes TCP connection to hostname:port and forwards any subsequent communication. Subsequent communication between extension and webproxy is base64-encoded. TODO(dilmah): remove this temporary solution, get rid of separate thread and listening socket, instead provide the same functionality via hooks into websocket layer. BUG=chromium-os:9667 TEST=Manual Review URL: http://codereview.chromium.org/6801008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84795 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/web_socket_proxy.h')
-rw-r--r--chrome/browser/chromeos/web_socket_proxy.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/web_socket_proxy.h b/chrome/browser/chromeos/web_socket_proxy.h
new file mode 100644
index 0000000..9f15cbc
--- /dev/null
+++ b/chrome/browser/chromeos/web_socket_proxy.h
@@ -0,0 +1,46 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_WEB_SOCKET_PROXY_H_
+#define CHROME_BROWSER_CHROMEOS_WEB_SOCKET_PROXY_H_
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+
+struct sockaddr;
+
+namespace chromeos {
+
+class WebSocketProxy {
+ public:
+ static const size_t kReadBufferLimit = 6 * 1024 * 1024;
+
+ // Limits incoming websocket headers in initial stage of connection.
+ static const size_t kHeaderLimit = 32 * 1024;
+
+ // Limits number of simultaneously open connections.
+ static const size_t kConnPoolLimit = 1000;
+
+ WebSocketProxy(
+ const std::vector<std::string>& allowed_origins,
+ struct sockaddr* addr, int addr_len);
+ ~WebSocketProxy();
+
+ // Do not call it twice.
+ void Run();
+
+ // Terminates running server (should be called on a different thread).
+ void Shutdown();
+
+ private:
+ void* impl_;
+
+ DISALLOW_COPY_AND_ASSIGN(WebSocketProxy);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_WEB_SOCKET_PROXY_H_