self.starttls = false; -- prevent starttls()\r
end\r
end\r
+ \r
+ function interface_mt:set_send(new_send)\r
+ -- No-op, we always use the underlying connection's send\r
end\r
\r
function interface_mt:starttls()\r
end\r
\r
interface.readcallback = function( event ) -- called on read events\r
- --vdebug( "new client read event, id/ip/port:", interface, ip, port )\r
+ --vdebug( "new client read event, id/ip/port:", tostring(interface.id), tostring(ip), tostring(port) )\r
if interface.noreading or interface.fatalerror then -- leave this event\r
- --vdebug( "leaving this event because:", interface.noreading or interface.fatalerror )\r
+ --vdebug( "leaving this event because:", tostring(interface.noreading or interface.fatalerror) )\r
interface.eventread = nil\r
return -1\r
end\r
if interface._usingssl then -- handle luasec\r
if interface.eventwritetimeout then -- ok, in the past writecallback was regged\r
local ret = interface.writecallback( ) -- call it\r
- --vdebug( "tried to write in readcallback, result:", ret )\r
+ --vdebug( "tried to write in readcallback, result:", tostring(ret) )\r
end\r
if interface.eventreadtimeout then\r
interface.eventreadtimeout:close( )\r
end\r
end )( )\r
\r
-local wrapclient = ( function( )\r
- return function( client, addr, serverport, listener, pattern, localaddr, localport, sslcfg, startssl )\r
- debug( "try to connect to:", addr, serverport, "with parameters:", pattern, localaddr, localport, sslcfg, startssl )\r
- local sslctx\r
- if sslcfg then -- handle ssl/new context\r
- if not ssl then\r
- debug "need luasec, but not available" \r
- return nil, "luasec not found"\r
- end\r
- sslctx, err = ssl.newcontext( sslcfg )\r
- if err then\r
- debug( "cannot create new ssl context:", err )\r
- return nil, err\r
- end\r
- end\r
+local addclient, wrapclient\r
+do\r
+ function wrapclient( client, ip, port, listeners, pattern, sslctx, startssl )\r
+ local interface = handleclient( client, ip, port, nil, pattern, listeners, sslctx )\r
+ interface:_start_session()\r
+ return interface\r
+ --function handleclient( client, ip, port, server, pattern, listener, _, sslctx ) -- creates an client interface\r
end\r
-end )( )\r
-\r
-local addclient = ( function( )\r
- return function( addr, serverport, listener, pattern, localaddr, localport, sslcfg, startssl )\r
+ \r
+ function addclient( addr, serverport, listener, pattern, localaddr, localport, sslcfg, startssl )\r
local client, err = socket.tcp() -- creating new socket\r
if not client then\r
debug( "cannot create socket:", err ) \r
return nil, err\r
end\r
end\r
+ local sslctx\r
+ if sslcfg then -- handle ssl/new context\r
+ if not ssl then\r
+ debug "need luasec, but not available" \r
+ return nil, "luasec not found"\r
+ end\r
+ sslctx, err = ssl.newcontext( sslcfg )\r
+ if err then\r
+ debug( "cannot create new ssl context:", err )\r
+ return nil, err\r
+ end\r
+ end\r
local res, err = client:connect( addr, serverport ) -- connect\r
if res or ( err == "timeout" ) then\r
local ip, port = client:getsockname( )\r
local server = function( )\r
return nil, "this is a dummy server interface"\r
end\r
- local interface = handleclient( client, ip, port, server, pattern, listener, sslctx )\r
+ local interface = wrapclient( client, ip, serverport, listeners, pattern, sslctx, startssl )\r
interface:_start_connection( startssl )\r
- debug( "new connection id:", interface )\r
+ debug( "new connection id:", interface.id )\r
return interface, err\r
else\r
debug( "new connection failed:", err )\r
return nil, err\r
end\r
- return wrapclient( client, addr, serverport, listener, pattern, localaddr, localport, sslcfg, startssl ) \r
end\r
-end )( )\r
+end\r
+\r
\r
local loop = function( ) -- starts the event loop\r
return base:loop( )\r