comparison mod_onions/mod_onions.lua @ 2880:05ebe377fc90

mod_onions: Use net.server API for creating a new connection instead of duplicating socket creation
author Kim Alvefur <zash@zash.se>
date Fri, 16 Feb 2018 04:33:13 +0100
parents 9e693d433a41
children 824b0d7fa883
comparison
equal deleted inserted replaced
2879:9d633d8f3451 2880:05ebe377fc90
1 local prosody = prosody; 1 local prosody = prosody;
2 local core_process_stanza = prosody.core_process_stanza; 2 local core_process_stanza = prosody.core_process_stanza;
3 3
4 local wrapclient = require "net.server".wrapclient; 4 local addclient = require "net.server".addclient;
5 local s2s_new_outgoing = require "core.s2smanager".new_outgoing; 5 local s2s_new_outgoing = require "core.s2smanager".new_outgoing;
6 local initialize_filters = require "util.filters".initialize; 6 local initialize_filters = require "util.filters".initialize;
7 local st = require "util.stanza"; 7 local st = require "util.stanza";
8 local socket = require "socket";
9 8
10 local portmanager = require "core.portmanager"; 9 local portmanager = require "core.portmanager";
11 10
12 local softreq = require "util.dependencies".softreq; 11 local softreq = require "util.dependencies".softreq;
13 12
178 end 177 end
179 end 178 end
180 179
181 local function connect_socks5(host_session, connect_host, connect_port) 180 local function connect_socks5(host_session, connect_host, connect_port)
182 181
183 local conn, handler = socket.tcp();
184
185 module:log("debug", "Connecting to " .. connect_host .. ":" .. connect_port); 182 module:log("debug", "Connecting to " .. connect_host .. ":" .. connect_port);
186 183
187 -- this is not necessarily the same as .to_host (it can be that this is from the onions_map) 184 -- this is not necessarily the same as .to_host (it can be that this is from the onions_map)
188 host_session.socks5_to = connect_host; 185 host_session.socks5_to = connect_host;
189 host_session.socks5_port = connect_port; 186 host_session.socks5_port = connect_port;
190 187
191 conn:settimeout(0); 188 local conn = addclient(proxy_ip, proxy_port, socks5listener, "*a");
192
193 local success, err = conn:connect(proxy_ip, proxy_port);
194
195 conn = wrapclient(conn, connect_host, connect_port, socks5listener, "*a");
196 189
197 socks5listener.register_outgoing(conn, host_session); 190 socks5listener.register_outgoing(conn, host_session);
198 191
199 host_session.conn = conn; 192 host_session.conn = conn;
200 end 193 end