From bd87a1d0e5d5188446a594639ee7e5e5b55a74b7 Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Sun, 2 Sep 2007 19:59:45 -0500 Subject: stop passing file size all over the place... on accept we just keep accepting until they stop sending us data, and when we are sending stuff we just send until eof, so it shouldn't be necessary. (need to test the eof stuff to make sure that's actually accurate). --- src/irc.lua | 2 +- src/irc/dcc.lua | 22 +++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/irc.lua b/src/irc.lua index 2b2bca7..ff90c36 100644 --- a/src/irc.lua +++ b/src/irc.lua @@ -502,7 +502,7 @@ function ctcp_handlers.on_dcc(from, to, message) local type, argument, address, port, size = base.unpack(misc.split(message, " ", nil, '"', '"')) if type == "SEND" then if misc.try_call(on_dcc, from, to, argument, address, port, size) then - dcc.accept(argument, address, port, size) + dcc.accept(argument, address, port) end elseif type == "CHAT" then -- TODO: implement this? do people ever use this? diff --git a/src/irc/dcc.lua b/src/irc/dcc.lua index 45eb446..bd06864 100644 --- a/src/irc/dcc.lua +++ b/src/irc/dcc.lua @@ -23,17 +23,13 @@ LAST_PORT = 5000 -- private functions {{{ -- send_file {{{ --- TODO: no reason to be sending the size parameter all over the place when we --- only need it in this function. also, should probably seek to the beginning --- of the file before sending it. -- -- Sends a file to a remote user, after that user has accepted our DCC SEND -- invitation -- @param sock Socket to send the file on -- @param file Lua file object corresponding to the file we want to send --- @param size Size of the file to send -- @param packet_size Size of the packets to send the file in -local function send_file(sock, file, size, packet_size) +local function send_file(sock, file, packet_size) local bytes = 0 while true do local packet = file:read(packet_size) @@ -49,7 +45,6 @@ local function send_file(sock, file, size, packet_size) break end end - if bytes >= size then break end coroutine.yield(true) end file:close() @@ -66,9 +61,8 @@ end -- that we can send data on -- @param ssock Server socket that the remote user connected to -- @param file Lua file object corresponding to the file we want to send --- @param size Size of the file to send -- @param packet_size Size of the packets to send the file in -local function handle_connect(ssock, file, size, packet_size) +local function handle_connect(ssock, file, packet_size) packet_size = packet_size or 1024 local sock = ssock:accept() sock:settimeout(0.1) @@ -76,7 +70,7 @@ local function handle_connect(ssock, file, size, packet_size) irc._unregister_socket(ssock, 'r') irc._register_socket(sock, 'w', coroutine.wrap(function(sock) - return send_file(sock, file, size, packet_size) + return send_file(sock, file, packet_size) end)) return true end @@ -87,9 +81,8 @@ end -- Accepts a file from a remote user which has offered it to us. -- @param sock Socket to receive the file on -- @param file Lua file object corresponding to the file we want to save --- @param size Size of the file we are receiving -- @param packet_size Size of the packets to receive the file in -local function accept_file(sock, file, size, packet_size) +local function accept_file(sock, file, packet_size) local bytes = 0 while true do local packet, err, partial_packet = sock:receive(packet_size) @@ -133,7 +126,7 @@ function send(nick, filename, port) file:seek("set") irc._register_socket(sock, 'r', coroutine.wrap(function(sock) - return handle_connect(sock, file, size) + return handle_connect(sock, file) end)) filename = misc.basename(filename) if filename:find(" ") then filename = '"' .. filename .. '"' end @@ -150,9 +143,8 @@ end -- @param filename Name to save the file as -- @param address IP address of the remote user -- @param port Port to connect to at the remote user --- @param size Size of the file that the remote user is offering -- @param packet_size Size of the packets the remote user will be sending -function accept(filename, address, port, size, packet_size) +function accept(filename, address, port, packet_size) packet_size = packet_size or 1024 local sock = base.assert(socket.tcp()) base.assert(sock:connect(misc.ip_int_to_str(address), port)) @@ -160,7 +152,7 @@ function accept(filename, address, port, size, packet_size) local file = base.assert(io.open(misc.get_unique_filename(filename), "w")) irc._register_socket(sock, 'r', coroutine.wrap(function(sock) - return accept_file(sock, file, size, packet_size) + return accept_file(sock, file, packet_size) end)) end -- }}} -- cgit v1.2.3-54-g00ecf