89 end |
89 end |
90 conn:write(string.char(5, 0, 0, 3, sha:len()) .. sha .. string.char(0, 0)); -- VER, REP, RSV, ATYP, BND.ADDR (sha), BND.PORT (2 Byte) |
90 conn:write(string.char(5, 0, 0, 3, sha:len()) .. sha .. string.char(0, 0)); -- VER, REP, RSV, ATYP, BND.ADDR (sha), BND.PORT (2 Byte) |
91 conn:lock_read(true) |
91 conn:lock_read(true) |
92 else |
92 else |
93 module:log("warn", "Neither data transfer nor initial connect of a participator of a transfer.") |
93 module:log("warn", "Neither data transfer nor initial connect of a participator of a transfer.") |
94 conn.close(); |
94 conn:close(); |
95 end |
95 end |
96 else |
96 else |
97 if data ~= nil then |
97 if data ~= nil then |
98 module:log("warn", "unknown connection with no authentication data -> closing it"); |
98 module:log("warn", "unknown connection with no authentication data -> closing it"); |
99 conn.close(); |
99 conn:close(); |
100 end |
100 end |
101 end |
101 end |
102 end |
102 end |
103 |
103 |
104 function connlistener.ondisconnect(conn, err) |
104 function connlistener.ondisconnect(conn, err) |
105 local session = sessions[conn]; |
105 local session = sessions[conn]; |
106 if session then |
106 if session then |
107 if session.sha and transfers[session.sha] then |
107 if session.sha and transfers[session.sha] then |
108 local initiator, target = transfers[session.sha].initiator, transfers[session.sha].target; |
108 local initiator, target = transfers[session.sha].initiator, transfers[session.sha].target; |
109 if initiator == conn and target ~= nil then |
109 if initiator == conn and target ~= nil then |
110 target.close(); |
110 target:close(); |
111 elseif target == conn and initiator ~= nil then |
111 elseif target == conn and initiator ~= nil then |
112 initiator.close(); |
112 initiator:close(); |
113 end |
113 end |
114 transfers[session.sha] = nil; |
114 transfers[session.sha] = nil; |
115 end |
115 end |
116 -- Clean up any session-related stuff here |
116 -- Clean up any session-related stuff here |
117 sessions[conn] = nil; |
117 sessions[conn] = nil; |