mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-14 15:05:38 +02:00
Add support for SOCKS proxies
This is still raw and experimental. To connect through a SOCKS proxy, set ZMQ_SOCKS_PROXY socket option on socket before issuing a connect call, e.g.: zmq_setsockopt (s, ZMQ_SOCKS_PROXY, "127.0.0.1:22222", strlen ("127.0.0.1:22222")); zmq_connect (s, "tcp://127.0.0.1:5555"); Known limitations: - only SOCKS version 5 supported - authentication not supported - new option is still undocumented
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "tcp_connecter.hpp"
|
||||
#include "ipc_connecter.hpp"
|
||||
#include "tipc_connecter.hpp"
|
||||
#include "socks_connecter.hpp"
|
||||
#include "pgm_sender.hpp"
|
||||
#include "pgm_receiver.hpp"
|
||||
#include "address.hpp"
|
||||
@@ -497,10 +498,22 @@ void zmq::session_base_t::start_connecting (bool wait_)
|
||||
// Create the connecter object.
|
||||
|
||||
if (addr->protocol == "tcp") {
|
||||
tcp_connecter_t *connecter = new (std::nothrow) tcp_connecter_t (
|
||||
io_thread, this, options, addr, wait_);
|
||||
alloc_assert (connecter);
|
||||
launch_child (connecter);
|
||||
if (options.socks_proxy_address != "") {
|
||||
address_t *proxy_address = new (std::nothrow)
|
||||
address_t ("tcp", options.socks_proxy_address);
|
||||
alloc_assert (proxy_address);
|
||||
socks_connecter_t *connecter =
|
||||
new (std::nothrow) socks_connecter_t (
|
||||
io_thread, this, options, addr, proxy_address, wait_);
|
||||
alloc_assert (connecter);
|
||||
launch_child (connecter);
|
||||
}
|
||||
else {
|
||||
tcp_connecter_t *connecter = new (std::nothrow)
|
||||
tcp_connecter_t (io_thread, this, options, addr, wait_);
|
||||
alloc_assert (connecter);
|
||||
launch_child (connecter);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user