1
0
mirror of https://github.com/kepler155c/opus synced 2025-10-24 12:17:40 +00:00

networking improvements

This commit is contained in:
kepler155c@gmail.com
2017-05-10 06:11:25 -04:00
parent f866d2bd58
commit 3a922ad2f4
10 changed files with 97 additions and 57 deletions

View File

@@ -5,6 +5,8 @@
* write acknowledgements
* background read buffering
]]--
require = requireInjector(getfenv(1))
local Logger = require('logger')
multishell.setTitle(multishell.getCurrent(), 'Net transport')
@@ -51,6 +53,7 @@ while true do
if e == 'timer' then
local socket = transport.timers[timerId]
if socket and socket.connected then
Logger.log('transport', 'timeout - closing socket ' .. socket.sport)
socket:close()
transport.timers[timerId] = nil
end
@@ -73,8 +76,15 @@ while true do
socket.timers[msg.seq] = nil
transport.timers[timerId] = nil
elseif msg.type == 'PING' then
socket.transmit(socket.dport, socket.dhost, {
type = 'ACK',
seq = msg.seq,
})
elseif msg.type == 'DATA' and msg.data then
if msg.seq ~= socket.rseq then
Logger.log('transport', 'seq error - closing socket ' .. socket.sport)
socket:close()
else
socket.rseq = socket.rseq + 1