diff options
author | dilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-10 16:48:44 +0000 |
---|---|---|
committer | dilmah@chromium.org <dilmah@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-10 16:48:44 +0000 |
commit | 2d14b373ac9ef900b12160ba64bafdcc0530f1dc (patch) | |
tree | 52e15b1f248599722f3d29cc4a4a5ee894e5fe65 /chrome/browser/chromeos/web_socket_proxy.h | |
parent | 658e883290c87808964c8fe245a4755c67b98eab (diff) | |
download | chromium_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.h | 46 |
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_ |