Browse Source

Merge pull request #839 from web2098/proxy-error-on-socks

Improve error handling for unsupported proxies
Paul-Louis Ageneau 2 years ago
parent
commit
27cddfa255
3 changed files with 9 additions and 2 deletions
  1. 1 1
      include/rtc/rtc.h
  2. 1 1
      include/rtc/websocket.hpp
  3. 7 0
      src/impl/websocket.cpp

+ 1 - 1
include/rtc/rtc.h

@@ -374,7 +374,7 @@ int rtcSetSsrcForType(const char *mediaType, const char *sdp, char *buffer, cons
 
 typedef struct {
 	bool disableTlsVerification; // if true, don't verify the TLS certificate
-	const char *proxyServer;
+	const char *proxyServer;     // only non-authenticated http supported for now
 	const char **protocols;
 	int protocolsCount;
 	int pingInterval;        // in milliseconds, 0 means default, < 0 means disabled

+ 1 - 1
include/rtc/websocket.hpp

@@ -34,7 +34,7 @@ public:
 
 	struct Configuration {
 		bool disableTlsVerification = false; // if true, don't verify the TLS certificate
-		optional<ProxyServer> proxyServer;
+		optional<ProxyServer> proxyServer;   // only non-authenticated http supported for now
 		std::vector<string> protocols;
 		optional<std::chrono::milliseconds> pingInterval; // zero to disable
 		optional<int> maxOutstandingPings;

+ 7 - 0
src/impl/websocket.cpp

@@ -38,6 +38,13 @@ WebSocket::WebSocket(optional<Configuration> optConfig, certificate_ptr certific
       mCertificate(std::move(certificate)), mIsSecure(mCertificate != nullptr),
       mRecvQueue(RECV_QUEUE_LIMIT, message_size_func) {
 	PLOG_VERBOSE << "Creating WebSocket";
+	if (config.proxyServer) {		
+		if( config.proxyServer->type == ProxyServer::Type::Socks5)
+			throw std::invalid_argument("Proxy server support for WebSocket is not implemented for Socks5");
+		if (config.proxyServer->username || config.proxyServer->password) {
+			PLOG_WARNING << "HTTP authentication support for proxy is not implemented";
+		}
+	}
 }
 
 WebSocket::~WebSocket() { PLOG_VERBOSE << "Destroying WebSocket"; }