summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anylike.org>2009-12-27 06:05:36 +0000
committerChristian Pointner <equinox@anylike.org>2009-12-27 06:05:36 +0000
commit854d164b98905c218d8e50baa6a913bc10569f46 (patch)
treee5ca9d8be6621df75f1f427119c701a0a6b3971e
parentadded lua detection to configure (diff)
moved echo server to seperate file
fixed lua multi file build
-rw-r--r--src/Makefile5
-rw-r--r--src/echo_server.lua69
-rw-r--r--src/main_loop.lua43
3 files changed, 73 insertions, 44 deletions
diff --git a/src/Makefile b/src/Makefile
index 7b86972..c32fbbe 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -42,7 +42,8 @@ C_OBJS := log.o \
C_SRCS := $(C_OBJS:%.o=%.c)
-LUA_SRCS := main_loop.lua
+LUA_SRCS := main_loop.lua \
+ echo_server.lua
.PHONY: clean cleanall distclean manpage install install-bin install-etc install-man uninstall remove purge
@@ -65,7 +66,7 @@ $(EXECUTABLE): $(C_OBJS)
$(CC) $(CFLAGS) -c $<
$(LUA_OBJ): $(LUA_SRCS)
- $(LUAC) -o $@ $<
+ $(LUAC) -o $@ $(LUA_SRCS)
strip: $(EXECUTABLE) $(LUA_OBJ)
$(STRIP) -s $(EXECUTABLE)
diff --git a/src/echo_server.lua b/src/echo_server.lua
new file mode 100644
index 0000000..ee23cb1
--- /dev/null
+++ b/src/echo_server.lua
@@ -0,0 +1,69 @@
+--
+-- anylike
+--
+-- anylike is a ...
+--
+--
+-- Copyright (C) 2007-2008 Markus Grueneis <gimpf@anylike.org>
+-- Christian Pointner <equinox@anylike.org>
+--
+-- This file is part of anylike.
+--
+-- anylike is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- any later version.
+--
+-- anylike is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with anylike. If not, see <http://www.gnu.org/licenses/>.
+--
+
+socket = require("socket")
+
+function echo_server()
+ local host, port = "localhost", 4500
+ local ip, err = socket.dns.toip(host)
+ if(ip == nil) then
+ log.print("ERROR", "can't resolve " .. host .. ": " .. err)
+ return -1
+ end
+
+ local udp, err = socket.udp()
+ if(udp == nil) then
+ log.print("ERROR", "can't create udp socket")
+ return -1
+ end
+
+ local ret, err = udp:setsockname(ip, port)
+ if(ret == nil) then
+ log.print("ERROR", "setsockname(" .. ip .. "," .. port .. ") failed: " .. err)
+ return -1
+ end
+
+ log.print("NOTICE", "echo server listening on " .. ip .. ":" .. port);
+
+ while true do
+ local dgrm, from_ip, from_port = udp:receivefrom()
+ if(ret == nil) then
+ log.print("ERROR", "receivefrom(" .. ip .. "," .. port .. ") failed: " .. from_ip)
+ return -1
+ end
+
+ local ret, err = udp:sendto(dgrm, from_ip, from_port)
+ if(ret == nil) then
+ log.print("ERROR", "sendto(" .. ip .. "," .. port .. ") failed: " .. err)
+ return -1
+ end
+
+ if(string.gsub(dgrm, "^(%w+)%s*%c$", "%1") == "quit") then
+ return 0
+ end
+ end
+
+ return 0
+end
diff --git a/src/main_loop.lua b/src/main_loop.lua
index 4002f22..76691f7 100644
--- a/src/main_loop.lua
+++ b/src/main_loop.lua
@@ -23,49 +23,8 @@
-- along with anylike. If not, see <http://www.gnu.org/licenses/>.
--
-socket = require("socket")
-
function main_loop(opt)
log.print("NOTICE", "main_loop started")
- local host, port = "localhost", 4500
- local ip, err = socket.dns.toip(host)
- if(ip == nil) then
- log.print("ERROR", "can't resolve " .. host .. ": " .. err)
- return -1
- end
-
- local udp, err = socket.udp()
- if(udp == nil) then
- log.print("ERROR", "can't create udp socket")
- return -1
- end
-
- local ret, err = udp:setsockname(ip, port)
- if(ret == nil) then
- log.print("ERROR", "setsockname(" .. ip .. "," .. port .. ") failed: " .. err)
- return -1
- end
-
- log.print("NOTICE", "echo server listening on " .. ip .. ":" .. port);
-
- while true do
- local dgrm, from_ip, from_port = udp:receivefrom()
- if(ret == nil) then
- log.print("ERROR", "receivefrom(" .. ip .. "," .. port .. ") failed: " .. from_ip)
- return -1
- end
-
- local ret, err = udp:sendto(dgrm, from_ip, from_port)
- if(ret == nil) then
- log.print("ERROR", "sendto(" .. ip .. "," .. port .. ") failed: " .. err)
- return -1
- end
-
- if(string.gsub(dgrm, "^(%w+)%s*%c$", "%1") == "quit") then
- return 0
- end
- end
-
- return 0 -- =0 -> OK, <0 -> error, >0 -> signal
+ return echo_server()
end