diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-10-07 04:40:59 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-10-07 04:40:59 +0000 |
commit | f4dadea763c1959a27dead24df3ee6c54c209842 (patch) | |
tree | c13b294a8ca5438d59b60e3f5a25a4f7c1fc9a1b | |
parent | 562d8cceb704a96a7b2f9acc4bc229ab9f5c6541 (diff) | |
download | luasocket-f4dadea763c1959a27dead24df3ee6c54c209842.tar.gz luasocket-f4dadea763c1959a27dead24df3ee6c54c209842.tar.bz2 luasocket-f4dadea763c1959a27dead24df3ee6c54c209842.zip |
Before compiling on Windows.
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | config | 20 | ||||
-rw-r--r-- | src/auxiliar.c | 32 | ||||
-rw-r--r-- | src/auxiliar.h | 26 | ||||
-rw-r--r-- | src/buffer.c | 74 | ||||
-rw-r--r-- | src/buffer.h | 22 | ||||
-rw-r--r-- | src/inet.c | 40 | ||||
-rw-r--r-- | src/inet.h | 12 | ||||
-rw-r--r-- | src/io.h | 4 | ||||
-rw-r--r-- | src/ltn12.lua | 52 | ||||
-rw-r--r-- | src/luasocket.c | 10 | ||||
-rw-r--r-- | src/options.c | 36 | ||||
-rw-r--r-- | src/options.h | 26 | ||||
-rw-r--r-- | src/select.c | 8 | ||||
-rw-r--r-- | src/socket.h | 56 | ||||
-rw-r--r-- | src/tcp.c | 114 | ||||
-rw-r--r-- | src/tcp.h | 6 | ||||
-rw-r--r-- | src/timeout.c | 44 | ||||
-rw-r--r-- | src/timeout.h | 30 | ||||
-rw-r--r-- | src/udp.c | 88 | ||||
-rw-r--r-- | src/udp.h | 4 | ||||
-rw-r--r-- | src/usocket.c | 113 | ||||
-rw-r--r-- | src/usocket.h | 6 | ||||
-rw-r--r-- | src/wsocket.c | 95 | ||||
-rw-r--r-- | src/wsocket.h | 6 | ||||
-rw-r--r-- | test/ftptest.lua | 12 |
26 files changed, 475 insertions, 462 deletions
@@ -1,3 +1,4 @@ | |||
1 | |||
1 | fix unix.c to return just a function | 2 | fix unix.c to return just a function |
2 | get rid of setmetatable(, nil) since packages don't need this anymore in | 3 | get rid of setmetatable(, nil) since packages don't need this anymore in |
3 | 5.1 | 4 | 5.1 |
@@ -37,20 +37,20 @@ INSTALL_EXEC=cp | |||
37 | # Compiler and linker settings | 37 | # Compiler and linker settings |
38 | # for Mac OS X | 38 | # for Mac OS X |
39 | # | 39 | # |
40 | #CC=gcc | 40 | CC=gcc |
41 | #DEF=-DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN | 41 | DEF=-DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN |
42 | #CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common | 42 | CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common |
43 | #LDFLAGS=-bundle -undefined dynamic_lookup | 43 | LDFLAGS=-bundle -undefined dynamic_lookup |
44 | #LD=export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc | 44 | LD=export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc |
45 | 45 | ||
46 | #------ | 46 | #------ |
47 | # Compiler and linker settings | 47 | # Compiler and linker settings |
48 | # for Linux | 48 | # for Linux |
49 | CC=gcc | 49 | #CC=gcc |
50 | DEF=-DLUASOCKET_DEBUG | 50 | #DEF=-DLUASOCKET_DEBUG |
51 | CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fpic | 51 | #CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fpic |
52 | LDFLAGS=-O -shared | 52 | #LDFLAGS=-O -shared |
53 | LD=gcc | 53 | #LD=gcc |
54 | 54 | ||
55 | #------ | 55 | #------ |
56 | # End of makefile configuration | 56 | # End of makefile configuration |
diff --git a/src/auxiliar.c b/src/auxiliar.c index b228785..fcc7e23 100644 --- a/src/auxiliar.c +++ b/src/auxiliar.c | |||
@@ -15,7 +15,7 @@ | |||
15 | /*-------------------------------------------------------------------------*\ | 15 | /*-------------------------------------------------------------------------*\ |
16 | * Initializes the module | 16 | * Initializes the module |
17 | \*-------------------------------------------------------------------------*/ | 17 | \*-------------------------------------------------------------------------*/ |
18 | int aux_open(lua_State *L) { | 18 | int auxiliar_open(lua_State *L) { |
19 | (void) L; | 19 | (void) L; |
20 | return 0; | 20 | return 0; |
21 | } | 21 | } |
@@ -24,7 +24,7 @@ int aux_open(lua_State *L) { | |||
24 | * Creates a new class with given methods | 24 | * Creates a new class with given methods |
25 | * Methods whose names start with __ are passed directly to the metatable. | 25 | * Methods whose names start with __ are passed directly to the metatable. |
26 | \*-------------------------------------------------------------------------*/ | 26 | \*-------------------------------------------------------------------------*/ |
27 | void aux_newclass(lua_State *L, const char *classname, luaL_reg *func) { | 27 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func) { |
28 | luaL_newmetatable(L, classname); /* mt */ | 28 | luaL_newmetatable(L, classname); /* mt */ |
29 | /* create __index table to place methods */ | 29 | /* create __index table to place methods */ |
30 | lua_pushstring(L, "__index"); /* mt,"__index" */ | 30 | lua_pushstring(L, "__index"); /* mt,"__index" */ |
@@ -47,7 +47,7 @@ void aux_newclass(lua_State *L, const char *classname, luaL_reg *func) { | |||
47 | /*-------------------------------------------------------------------------*\ | 47 | /*-------------------------------------------------------------------------*\ |
48 | * Prints the value of a class in a nice way | 48 | * Prints the value of a class in a nice way |
49 | \*-------------------------------------------------------------------------*/ | 49 | \*-------------------------------------------------------------------------*/ |
50 | int aux_tostring(lua_State *L) { | 50 | int auxiliar_tostring(lua_State *L) { |
51 | char buf[32]; | 51 | char buf[32]; |
52 | if (!lua_getmetatable(L, 1)) goto error; | 52 | if (!lua_getmetatable(L, 1)) goto error; |
53 | lua_pushstring(L, "__index"); | 53 | lua_pushstring(L, "__index"); |
@@ -68,7 +68,7 @@ error: | |||
68 | /*-------------------------------------------------------------------------*\ | 68 | /*-------------------------------------------------------------------------*\ |
69 | * Insert class into group | 69 | * Insert class into group |
70 | \*-------------------------------------------------------------------------*/ | 70 | \*-------------------------------------------------------------------------*/ |
71 | void aux_add2group(lua_State *L, const char *classname, const char *groupname) { | 71 | void auxiliar_add2group(lua_State *L, const char *classname, const char *groupname) { |
72 | luaL_getmetatable(L, classname); | 72 | luaL_getmetatable(L, classname); |
73 | lua_pushstring(L, groupname); | 73 | lua_pushstring(L, groupname); |
74 | lua_pushboolean(L, 1); | 74 | lua_pushboolean(L, 1); |
@@ -79,7 +79,7 @@ void aux_add2group(lua_State *L, const char *classname, const char *groupname) { | |||
79 | /*-------------------------------------------------------------------------*\ | 79 | /*-------------------------------------------------------------------------*\ |
80 | * Make sure argument is a boolean | 80 | * Make sure argument is a boolean |
81 | \*-------------------------------------------------------------------------*/ | 81 | \*-------------------------------------------------------------------------*/ |
82 | int aux_checkboolean(lua_State *L, int objidx) { | 82 | int auxiliar_checkboolean(lua_State *L, int objidx) { |
83 | if (!lua_isboolean(L, objidx)) | 83 | if (!lua_isboolean(L, objidx)) |
84 | luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); | 84 | luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); |
85 | return lua_toboolean(L, objidx); | 85 | return lua_toboolean(L, objidx); |
@@ -89,8 +89,8 @@ int aux_checkboolean(lua_State *L, int objidx) { | |||
89 | * Return userdata pointer if object belongs to a given class, abort with | 89 | * Return userdata pointer if object belongs to a given class, abort with |
90 | * error otherwise | 90 | * error otherwise |
91 | \*-------------------------------------------------------------------------*/ | 91 | \*-------------------------------------------------------------------------*/ |
92 | void *aux_checkclass(lua_State *L, const char *classname, int objidx) { | 92 | void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) { |
93 | void *data = aux_getclassudata(L, classname, objidx); | 93 | void *data = auxiliar_getclassudata(L, classname, objidx); |
94 | if (!data) { | 94 | if (!data) { |
95 | char msg[45]; | 95 | char msg[45]; |
96 | sprintf(msg, "%.35s expected", classname); | 96 | sprintf(msg, "%.35s expected", classname); |
@@ -103,8 +103,8 @@ void *aux_checkclass(lua_State *L, const char *classname, int objidx) { | |||
103 | * Return userdata pointer if object belongs to a given group, abort with | 103 | * Return userdata pointer if object belongs to a given group, abort with |
104 | * error otherwise | 104 | * error otherwise |
105 | \*-------------------------------------------------------------------------*/ | 105 | \*-------------------------------------------------------------------------*/ |
106 | void *aux_checkgroup(lua_State *L, const char *groupname, int objidx) { | 106 | void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) { |
107 | void *data = aux_getgroupudata(L, groupname, objidx); | 107 | void *data = auxiliar_getgroupudata(L, groupname, objidx); |
108 | if (!data) { | 108 | if (!data) { |
109 | char msg[45]; | 109 | char msg[45]; |
110 | sprintf(msg, "%.35s expected", groupname); | 110 | sprintf(msg, "%.35s expected", groupname); |
@@ -116,7 +116,7 @@ void *aux_checkgroup(lua_State *L, const char *groupname, int objidx) { | |||
116 | /*-------------------------------------------------------------------------*\ | 116 | /*-------------------------------------------------------------------------*\ |
117 | * Set object class | 117 | * Set object class |
118 | \*-------------------------------------------------------------------------*/ | 118 | \*-------------------------------------------------------------------------*/ |
119 | void aux_setclass(lua_State *L, const char *classname, int objidx) { | 119 | void auxiliar_setclass(lua_State *L, const char *classname, int objidx) { |
120 | luaL_getmetatable(L, classname); | 120 | luaL_getmetatable(L, classname); |
121 | if (objidx < 0) objidx--; | 121 | if (objidx < 0) objidx--; |
122 | lua_setmetatable(L, objidx); | 122 | lua_setmetatable(L, objidx); |
@@ -126,10 +126,7 @@ void aux_setclass(lua_State *L, const char *classname, int objidx) { | |||
126 | * Get a userdata pointer if object belongs to a given group. Return NULL | 126 | * Get a userdata pointer if object belongs to a given group. Return NULL |
127 | * otherwise | 127 | * otherwise |
128 | \*-------------------------------------------------------------------------*/ | 128 | \*-------------------------------------------------------------------------*/ |
129 | void *aux_getgroupudata(lua_State *L, const char *groupname, int objidx) { | 129 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) { |
130 | #if 0 | ||
131 | return lua_touserdata(L, objidx); | ||
132 | #else | ||
133 | if (!lua_getmetatable(L, objidx)) | 130 | if (!lua_getmetatable(L, objidx)) |
134 | return NULL; | 131 | return NULL; |
135 | lua_pushstring(L, groupname); | 132 | lua_pushstring(L, groupname); |
@@ -141,17 +138,12 @@ void *aux_getgroupudata(lua_State *L, const char *groupname, int objidx) { | |||
141 | lua_pop(L, 2); | 138 | lua_pop(L, 2); |
142 | return lua_touserdata(L, objidx); | 139 | return lua_touserdata(L, objidx); |
143 | } | 140 | } |
144 | #endif | ||
145 | } | 141 | } |
146 | 142 | ||
147 | /*-------------------------------------------------------------------------*\ | 143 | /*-------------------------------------------------------------------------*\ |
148 | * Get a userdata pointer if object belongs to a given class. Return NULL | 144 | * Get a userdata pointer if object belongs to a given class. Return NULL |
149 | * otherwise | 145 | * otherwise |
150 | \*-------------------------------------------------------------------------*/ | 146 | \*-------------------------------------------------------------------------*/ |
151 | void *aux_getclassudata(lua_State *L, const char *classname, int objidx) { | 147 | void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) { |
152 | #if 0 | ||
153 | return lua_touserdata(L, objidx); | ||
154 | #else | ||
155 | return luaL_checkudata(L, objidx, classname); | 148 | return luaL_checkudata(L, objidx, classname); |
156 | #endif | ||
157 | } | 149 | } |
diff --git a/src/auxiliar.h b/src/auxiliar.h index ff20b50..8a18bcf 100644 --- a/src/auxiliar.h +++ b/src/auxiliar.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef AUX_H | 1 | #ifndef AUXILIAR_H |
2 | #define AUX_H | 2 | #define AUXILIAR_H |
3 | /*=========================================================================*\ | 3 | /*=========================================================================*\ |
4 | * Auxiliar routines for class hierarchy manipulation | 4 | * Auxiliar routines for class hierarchy manipulation |
5 | * LuaSocket toolkit (but completely independent of other LuaSocket modules) | 5 | * LuaSocket toolkit (but completely independent of other LuaSocket modules) |
@@ -34,15 +34,15 @@ | |||
34 | #include "lua.h" | 34 | #include "lua.h" |
35 | #include "lauxlib.h" | 35 | #include "lauxlib.h" |
36 | 36 | ||
37 | int aux_open(lua_State *L); | 37 | int auxiliar_open(lua_State *L); |
38 | void aux_newclass(lua_State *L, const char *classname, luaL_reg *func); | 38 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func); |
39 | void aux_add2group(lua_State *L, const char *classname, const char *group); | 39 | void auxiliar_add2group(lua_State *L, const char *classname, const char *group); |
40 | void aux_setclass(lua_State *L, const char *classname, int objidx); | 40 | void auxiliar_setclass(lua_State *L, const char *classname, int objidx); |
41 | void *aux_checkclass(lua_State *L, const char *classname, int objidx); | 41 | void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx); |
42 | void *aux_checkgroup(lua_State *L, const char *groupname, int objidx); | 42 | void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx); |
43 | void *aux_getclassudata(lua_State *L, const char *groupname, int objidx); | 43 | void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx); |
44 | void *aux_getgroupudata(lua_State *L, const char *groupname, int objidx); | 44 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); |
45 | int aux_checkboolean(lua_State *L, int objidx); | 45 | int auxiliar_checkboolean(lua_State *L, int objidx); |
46 | int aux_tostring(lua_State *L); | 46 | int auxiliar_tostring(lua_State *L); |
47 | 47 | ||
48 | #endif /* AUX_H */ | 48 | #endif /* AUXILIAR_H */ |
diff --git a/src/buffer.c b/src/buffer.c index b69a9b8..df1a0bc 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
@@ -12,12 +12,12 @@ | |||
12 | /*=========================================================================*\ | 12 | /*=========================================================================*\ |
13 | * Internal function prototypes | 13 | * Internal function prototypes |
14 | \*=========================================================================*/ | 14 | \*=========================================================================*/ |
15 | static int recvraw(p_buf buf, size_t wanted, luaL_Buffer *b); | 15 | static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b); |
16 | static int recvline(p_buf buf, luaL_Buffer *b); | 16 | static int recvline(p_buffer buf, luaL_Buffer *b); |
17 | static int recvall(p_buf buf, luaL_Buffer *b); | 17 | static int recvall(p_buffer buf, luaL_Buffer *b); |
18 | static int buf_get(p_buf buf, const char **data, size_t *count); | 18 | static int buffer_get(p_buffer buf, const char **data, size_t *count); |
19 | static void buf_skip(p_buf buf, size_t count); | 19 | static void buffer_skip(p_buffer buf, size_t count); |
20 | static int sendraw(p_buf buf, const char *data, size_t count, size_t *sent); | 20 | static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent); |
21 | 21 | ||
22 | /* min and max macros */ | 22 | /* min and max macros */ |
23 | #ifndef MIN | 23 | #ifndef MIN |
@@ -33,7 +33,7 @@ static int sendraw(p_buf buf, const char *data, size_t count, size_t *sent); | |||
33 | /*-------------------------------------------------------------------------*\ | 33 | /*-------------------------------------------------------------------------*\ |
34 | * Initializes module | 34 | * Initializes module |
35 | \*-------------------------------------------------------------------------*/ | 35 | \*-------------------------------------------------------------------------*/ |
36 | int buf_open(lua_State *L) { | 36 | int buffer_open(lua_State *L) { |
37 | (void) L; | 37 | (void) L; |
38 | return 0; | 38 | return 0; |
39 | } | 39 | } |
@@ -41,31 +41,31 @@ int buf_open(lua_State *L) { | |||
41 | /*-------------------------------------------------------------------------*\ | 41 | /*-------------------------------------------------------------------------*\ |
42 | * Initializes C structure | 42 | * Initializes C structure |
43 | \*-------------------------------------------------------------------------*/ | 43 | \*-------------------------------------------------------------------------*/ |
44 | void buf_init(p_buf buf, p_io io, p_tm tm) { | 44 | void buffer_init(p_buffer buf, p_io io, p_timeout tm) { |
45 | buf->first = buf->last = 0; | 45 | buf->first = buf->last = 0; |
46 | buf->io = io; | 46 | buf->io = io; |
47 | buf->tm = tm; | 47 | buf->tm = tm; |
48 | buf->received = buf->sent = 0; | 48 | buf->received = buf->sent = 0; |
49 | buf->birthday = tm_gettime(); | 49 | buf->birthday = timeout_gettime(); |
50 | } | 50 | } |
51 | 51 | ||
52 | /*-------------------------------------------------------------------------*\ | 52 | /*-------------------------------------------------------------------------*\ |
53 | * object:getstats() interface | 53 | * object:getstats() interface |
54 | \*-------------------------------------------------------------------------*/ | 54 | \*-------------------------------------------------------------------------*/ |
55 | int buf_meth_getstats(lua_State *L, p_buf buf) { | 55 | int buffer_meth_getstats(lua_State *L, p_buffer buf) { |
56 | lua_pushnumber(L, buf->received); | 56 | lua_pushnumber(L, buf->received); |
57 | lua_pushnumber(L, buf->sent); | 57 | lua_pushnumber(L, buf->sent); |
58 | lua_pushnumber(L, tm_gettime() - buf->birthday); | 58 | lua_pushnumber(L, timeout_gettime() - buf->birthday); |
59 | return 3; | 59 | return 3; |
60 | } | 60 | } |
61 | 61 | ||
62 | /*-------------------------------------------------------------------------*\ | 62 | /*-------------------------------------------------------------------------*\ |
63 | * object:setstats() interface | 63 | * object:setstats() interface |
64 | \*-------------------------------------------------------------------------*/ | 64 | \*-------------------------------------------------------------------------*/ |
65 | int buf_meth_setstats(lua_State *L, p_buf buf) { | 65 | int buffer_meth_setstats(lua_State *L, p_buffer buf) { |
66 | buf->received = (long) luaL_optnumber(L, 2, buf->received); | 66 | buf->received = (long) luaL_optnumber(L, 2, buf->received); |
67 | buf->sent = (long) luaL_optnumber(L, 3, buf->sent); | 67 | buf->sent = (long) luaL_optnumber(L, 3, buf->sent); |
68 | if (lua_isnumber(L, 4)) buf->birthday = tm_gettime() - lua_tonumber(L, 4); | 68 | if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4); |
69 | lua_pushnumber(L, 1); | 69 | lua_pushnumber(L, 1); |
70 | return 1; | 70 | return 1; |
71 | } | 71 | } |
@@ -73,9 +73,9 @@ int buf_meth_setstats(lua_State *L, p_buf buf) { | |||
73 | /*-------------------------------------------------------------------------*\ | 73 | /*-------------------------------------------------------------------------*\ |
74 | * object:send() interface | 74 | * object:send() interface |
75 | \*-------------------------------------------------------------------------*/ | 75 | \*-------------------------------------------------------------------------*/ |
76 | int buf_meth_send(lua_State *L, p_buf buf) { | 76 | int buffer_meth_send(lua_State *L, p_buffer buf) { |
77 | int top = lua_gettop(L); | 77 | int top = lua_gettop(L); |
78 | p_tm tm = tm_markstart(buf->tm); | 78 | p_timeout tm = timeout_markstart(buf->tm); |
79 | int err = IO_DONE; | 79 | int err = IO_DONE; |
80 | size_t size = 0, sent = 0; | 80 | size_t size = 0, sent = 0; |
81 | const char *data = luaL_checklstring(L, 2, &size); | 81 | const char *data = luaL_checklstring(L, 2, &size); |
@@ -98,7 +98,7 @@ int buf_meth_send(lua_State *L, p_buf buf) { | |||
98 | } | 98 | } |
99 | #ifdef LUASOCKET_DEBUG | 99 | #ifdef LUASOCKET_DEBUG |
100 | /* push time elapsed during operation as the last return value */ | 100 | /* push time elapsed during operation as the last return value */ |
101 | lua_pushnumber(L, tm_gettime() - tm_getstart(tm)); | 101 | lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm)); |
102 | #endif | 102 | #endif |
103 | return lua_gettop(L) - top; | 103 | return lua_gettop(L) - top; |
104 | } | 104 | } |
@@ -106,9 +106,9 @@ int buf_meth_send(lua_State *L, p_buf buf) { | |||
106 | /*-------------------------------------------------------------------------*\ | 106 | /*-------------------------------------------------------------------------*\ |
107 | * object:receive() interface | 107 | * object:receive() interface |
108 | \*-------------------------------------------------------------------------*/ | 108 | \*-------------------------------------------------------------------------*/ |
109 | int buf_meth_receive(lua_State *L, p_buf buf) { | 109 | int buffer_meth_receive(lua_State *L, p_buffer buf) { |
110 | int err = IO_DONE, top = lua_gettop(L); | 110 | int err = IO_DONE, top = lua_gettop(L); |
111 | p_tm tm = tm_markstart(buf->tm); | 111 | p_timeout tm = timeout_markstart(buf->tm); |
112 | luaL_Buffer b; | 112 | luaL_Buffer b; |
113 | size_t size; | 113 | size_t size; |
114 | const char *part = luaL_optlstring(L, 3, "", &size); | 114 | const char *part = luaL_optlstring(L, 3, "", &size); |
@@ -141,7 +141,7 @@ int buf_meth_receive(lua_State *L, p_buf buf) { | |||
141 | } | 141 | } |
142 | #ifdef LUASOCKET_DEBUG | 142 | #ifdef LUASOCKET_DEBUG |
143 | /* push time elapsed during operation as the last return value */ | 143 | /* push time elapsed during operation as the last return value */ |
144 | lua_pushnumber(L, tm_gettime() - tm_getstart(tm)); | 144 | lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm)); |
145 | #endif | 145 | #endif |
146 | return lua_gettop(L) - top; | 146 | return lua_gettop(L) - top; |
147 | } | 147 | } |
@@ -149,7 +149,7 @@ int buf_meth_receive(lua_State *L, p_buf buf) { | |||
149 | /*-------------------------------------------------------------------------*\ | 149 | /*-------------------------------------------------------------------------*\ |
150 | * Determines if there is any data in the read buffer | 150 | * Determines if there is any data in the read buffer |
151 | \*-------------------------------------------------------------------------*/ | 151 | \*-------------------------------------------------------------------------*/ |
152 | int buf_isempty(p_buf buf) { | 152 | int buffer_isempty(p_buffer buf) { |
153 | return buf->first >= buf->last; | 153 | return buf->first >= buf->last; |
154 | } | 154 | } |
155 | 155 | ||
@@ -160,9 +160,9 @@ int buf_isempty(p_buf buf) { | |||
160 | * Sends a block of data (unbuffered) | 160 | * Sends a block of data (unbuffered) |
161 | \*-------------------------------------------------------------------------*/ | 161 | \*-------------------------------------------------------------------------*/ |
162 | #define STEPSIZE 8192 | 162 | #define STEPSIZE 8192 |
163 | static int sendraw(p_buf buf, const char *data, size_t count, size_t *sent) { | 163 | static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent) { |
164 | p_io io = buf->io; | 164 | p_io io = buf->io; |
165 | p_tm tm = buf->tm; | 165 | p_timeout tm = buf->tm; |
166 | size_t total = 0; | 166 | size_t total = 0; |
167 | int err = IO_DONE; | 167 | int err = IO_DONE; |
168 | while (total < count && err == IO_DONE) { | 168 | while (total < count && err == IO_DONE) { |
@@ -179,15 +179,15 @@ static int sendraw(p_buf buf, const char *data, size_t count, size_t *sent) { | |||
179 | /*-------------------------------------------------------------------------*\ | 179 | /*-------------------------------------------------------------------------*\ |
180 | * Reads a fixed number of bytes (buffered) | 180 | * Reads a fixed number of bytes (buffered) |
181 | \*-------------------------------------------------------------------------*/ | 181 | \*-------------------------------------------------------------------------*/ |
182 | static int recvraw(p_buf buf, size_t wanted, luaL_Buffer *b) { | 182 | static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b) { |
183 | int err = IO_DONE; | 183 | int err = IO_DONE; |
184 | size_t total = 0; | 184 | size_t total = 0; |
185 | while (total < wanted && err == IO_DONE) { | 185 | while (total < wanted && err == IO_DONE) { |
186 | size_t count; const char *data; | 186 | size_t count; const char *data; |
187 | err = buf_get(buf, &data, &count); | 187 | err = buffer_get(buf, &data, &count); |
188 | count = MIN(count, wanted - total); | 188 | count = MIN(count, wanted - total); |
189 | luaL_addlstring(b, data, count); | 189 | luaL_addlstring(b, data, count); |
190 | buf_skip(buf, count); | 190 | buffer_skip(buf, count); |
191 | total += count; | 191 | total += count; |
192 | } | 192 | } |
193 | return err; | 193 | return err; |
@@ -196,13 +196,13 @@ static int recvraw(p_buf buf, size_t wanted, luaL_Buffer *b) { | |||
196 | /*-------------------------------------------------------------------------*\ | 196 | /*-------------------------------------------------------------------------*\ |
197 | * Reads everything until the connection is closed (buffered) | 197 | * Reads everything until the connection is closed (buffered) |
198 | \*-------------------------------------------------------------------------*/ | 198 | \*-------------------------------------------------------------------------*/ |
199 | static int recvall(p_buf buf, luaL_Buffer *b) { | 199 | static int recvall(p_buffer buf, luaL_Buffer *b) { |
200 | int err = IO_DONE; | 200 | int err = IO_DONE; |
201 | while (err == IO_DONE) { | 201 | while (err == IO_DONE) { |
202 | const char *data; size_t count; | 202 | const char *data; size_t count; |
203 | err = buf_get(buf, &data, &count); | 203 | err = buffer_get(buf, &data, &count); |
204 | luaL_addlstring(b, data, count); | 204 | luaL_addlstring(b, data, count); |
205 | buf_skip(buf, count); | 205 | buffer_skip(buf, count); |
206 | } | 206 | } |
207 | if (err == IO_CLOSED) return IO_DONE; | 207 | if (err == IO_CLOSED) return IO_DONE; |
208 | else return err; | 208 | else return err; |
@@ -212,11 +212,11 @@ static int recvall(p_buf buf, luaL_Buffer *b) { | |||
212 | * Reads a line terminated by a CR LF pair or just by a LF. The CR and LF | 212 | * Reads a line terminated by a CR LF pair or just by a LF. The CR and LF |
213 | * are not returned by the function and are discarded from the buffer | 213 | * are not returned by the function and are discarded from the buffer |
214 | \*-------------------------------------------------------------------------*/ | 214 | \*-------------------------------------------------------------------------*/ |
215 | static int recvline(p_buf buf, luaL_Buffer *b) { | 215 | static int recvline(p_buffer buf, luaL_Buffer *b) { |
216 | int err = IO_DONE; | 216 | int err = IO_DONE; |
217 | while (err == IO_DONE) { | 217 | while (err == IO_DONE) { |
218 | size_t count, pos; const char *data; | 218 | size_t count, pos; const char *data; |
219 | err = buf_get(buf, &data, &count); | 219 | err = buffer_get(buf, &data, &count); |
220 | pos = 0; | 220 | pos = 0; |
221 | while (pos < count && data[pos] != '\n') { | 221 | while (pos < count && data[pos] != '\n') { |
222 | /* we ignore all \r's */ | 222 | /* we ignore all \r's */ |
@@ -224,10 +224,10 @@ static int recvline(p_buf buf, luaL_Buffer *b) { | |||
224 | pos++; | 224 | pos++; |
225 | } | 225 | } |
226 | if (pos < count) { /* found '\n' */ | 226 | if (pos < count) { /* found '\n' */ |
227 | buf_skip(buf, pos+1); /* skip '\n' too */ | 227 | buffer_skip(buf, pos+1); /* skip '\n' too */ |
228 | break; /* we are done */ | 228 | break; /* we are done */ |
229 | } else /* reached the end of the buffer */ | 229 | } else /* reached the end of the buffer */ |
230 | buf_skip(buf, pos); | 230 | buffer_skip(buf, pos); |
231 | } | 231 | } |
232 | return err; | 232 | return err; |
233 | } | 233 | } |
@@ -236,10 +236,10 @@ static int recvline(p_buf buf, luaL_Buffer *b) { | |||
236 | * Skips a given number of bytes from read buffer. No data is read from the | 236 | * Skips a given number of bytes from read buffer. No data is read from the |
237 | * transport layer | 237 | * transport layer |
238 | \*-------------------------------------------------------------------------*/ | 238 | \*-------------------------------------------------------------------------*/ |
239 | static void buf_skip(p_buf buf, size_t count) { | 239 | static void buffer_skip(p_buffer buf, size_t count) { |
240 | buf->received += count; | 240 | buf->received += count; |
241 | buf->first += count; | 241 | buf->first += count; |
242 | if (buf_isempty(buf)) | 242 | if (buffer_isempty(buf)) |
243 | buf->first = buf->last = 0; | 243 | buf->first = buf->last = 0; |
244 | } | 244 | } |
245 | 245 | ||
@@ -247,11 +247,11 @@ static void buf_skip(p_buf buf, size_t count) { | |||
247 | * Return any data available in buffer, or get more data from transport layer | 247 | * Return any data available in buffer, or get more data from transport layer |
248 | * if buffer is empty | 248 | * if buffer is empty |
249 | \*-------------------------------------------------------------------------*/ | 249 | \*-------------------------------------------------------------------------*/ |
250 | static int buf_get(p_buf buf, const char **data, size_t *count) { | 250 | static int buffer_get(p_buffer buf, const char **data, size_t *count) { |
251 | int err = IO_DONE; | 251 | int err = IO_DONE; |
252 | p_io io = buf->io; | 252 | p_io io = buf->io; |
253 | p_tm tm = buf->tm; | 253 | p_timeout tm = buf->tm; |
254 | if (buf_isempty(buf)) { | 254 | if (buffer_isempty(buf)) { |
255 | size_t got; | 255 | size_t got; |
256 | err = io->recv(io->ctx, buf->data, BUF_SIZE, &got, tm); | 256 | err = io->recv(io->ctx, buf->data, BUF_SIZE, &got, tm); |
257 | buf->first = 0; | 257 | buf->first = 0; |
diff --git a/src/buffer.h b/src/buffer.h index f43e676..0a4a335 100644 --- a/src/buffer.h +++ b/src/buffer.h | |||
@@ -26,22 +26,22 @@ | |||
26 | #define BUF_SIZE 8192 | 26 | #define BUF_SIZE 8192 |
27 | 27 | ||
28 | /* buffer control structure */ | 28 | /* buffer control structure */ |
29 | typedef struct t_buf_ { | 29 | typedef struct t_buffer_ { |
30 | double birthday; /* throttle support info: creation time, */ | 30 | double birthday; /* throttle support info: creation time, */ |
31 | size_t sent, received; /* bytes sent, and bytes received */ | 31 | size_t sent, received; /* bytes sent, and bytes received */ |
32 | p_io io; /* IO driver used for this buffer */ | 32 | p_io io; /* IO driver used for this buffer */ |
33 | p_tm tm; /* timeout management for this buffer */ | 33 | p_timeout tm; /* timeout management for this buffer */ |
34 | size_t first, last; /* index of first and last bytes of stored data */ | 34 | size_t first, last; /* index of first and last bytes of stored data */ |
35 | char data[BUF_SIZE]; /* storage space for buffer data */ | 35 | char data[BUF_SIZE]; /* storage space for buffer data */ |
36 | } t_buf; | 36 | } t_buffer; |
37 | typedef t_buf *p_buf; | 37 | typedef t_buffer *p_buffer; |
38 | 38 | ||
39 | int buf_open(lua_State *L); | 39 | int buffer_open(lua_State *L); |
40 | void buf_init(p_buf buf, p_io io, p_tm tm); | 40 | void buffer_init(p_buffer buf, p_io io, p_timeout tm); |
41 | int buf_meth_send(lua_State *L, p_buf buf); | 41 | int buffer_meth_send(lua_State *L, p_buffer buf); |
42 | int buf_meth_receive(lua_State *L, p_buf buf); | 42 | int buffer_meth_receive(lua_State *L, p_buffer buf); |
43 | int buf_meth_getstats(lua_State *L, p_buf buf); | 43 | int buffer_meth_getstats(lua_State *L, p_buffer buf); |
44 | int buf_meth_setstats(lua_State *L, p_buf buf); | 44 | int buffer_meth_setstats(lua_State *L, p_buffer buf); |
45 | int buf_isempty(p_buf buf); | 45 | int buffer_isempty(p_buffer buf); |
46 | 46 | ||
47 | #endif /* BUF_H */ | 47 | #endif /* BUF_H */ |
@@ -53,9 +53,9 @@ int inet_open(lua_State *L) | |||
53 | static int inet_gethost(const char *address, struct hostent **hp) { | 53 | static int inet_gethost(const char *address, struct hostent **hp) { |
54 | struct in_addr addr; | 54 | struct in_addr addr; |
55 | if (inet_aton(address, &addr)) | 55 | if (inet_aton(address, &addr)) |
56 | return sock_gethostbyaddr((char *) &addr, sizeof(addr), hp); | 56 | return socket_gethostbyaddr((char *) &addr, sizeof(addr), hp); |
57 | else | 57 | else |
58 | return sock_gethostbyname(address, hp); | 58 | return socket_gethostbyname(address, hp); |
59 | } | 59 | } |
60 | 60 | ||
61 | /*-------------------------------------------------------------------------*\ | 61 | /*-------------------------------------------------------------------------*\ |
@@ -68,7 +68,7 @@ static int inet_global_tohostname(lua_State *L) { | |||
68 | int err = inet_gethost(address, &hp); | 68 | int err = inet_gethost(address, &hp); |
69 | if (err != IO_DONE) { | 69 | if (err != IO_DONE) { |
70 | lua_pushnil(L); | 70 | lua_pushnil(L); |
71 | lua_pushstring(L, sock_hoststrerror(err)); | 71 | lua_pushstring(L, socket_hoststrerror(err)); |
72 | return 2; | 72 | return 2; |
73 | } | 73 | } |
74 | lua_pushstring(L, hp->h_name); | 74 | lua_pushstring(L, hp->h_name); |
@@ -87,7 +87,7 @@ static int inet_global_toip(lua_State *L) | |||
87 | int err = inet_gethost(address, &hp); | 87 | int err = inet_gethost(address, &hp); |
88 | if (err != IO_DONE) { | 88 | if (err != IO_DONE) { |
89 | lua_pushnil(L); | 89 | lua_pushnil(L); |
90 | lua_pushstring(L, sock_hoststrerror(err)); | 90 | lua_pushstring(L, socket_hoststrerror(err)); |
91 | return 2; | 91 | return 2; |
92 | } | 92 | } |
93 | lua_pushstring(L, inet_ntoa(*((struct in_addr *) hp->h_addr))); | 93 | lua_pushstring(L, inet_ntoa(*((struct in_addr *) hp->h_addr))); |
@@ -121,7 +121,7 @@ static int inet_global_gethostname(lua_State *L) | |||
121 | /*-------------------------------------------------------------------------*\ | 121 | /*-------------------------------------------------------------------------*\ |
122 | * Retrieves socket peer name | 122 | * Retrieves socket peer name |
123 | \*-------------------------------------------------------------------------*/ | 123 | \*-------------------------------------------------------------------------*/ |
124 | int inet_meth_getpeername(lua_State *L, p_sock ps) | 124 | int inet_meth_getpeername(lua_State *L, p_socket ps) |
125 | { | 125 | { |
126 | struct sockaddr_in peer; | 126 | struct sockaddr_in peer; |
127 | socklen_t peer_len = sizeof(peer); | 127 | socklen_t peer_len = sizeof(peer); |
@@ -138,7 +138,7 @@ int inet_meth_getpeername(lua_State *L, p_sock ps) | |||
138 | /*-------------------------------------------------------------------------*\ | 138 | /*-------------------------------------------------------------------------*\ |
139 | * Retrieves socket local name | 139 | * Retrieves socket local name |
140 | \*-------------------------------------------------------------------------*/ | 140 | \*-------------------------------------------------------------------------*/ |
141 | int inet_meth_getsockname(lua_State *L, p_sock ps) | 141 | int inet_meth_getsockname(lua_State *L, p_socket ps) |
142 | { | 142 | { |
143 | struct sockaddr_in local; | 143 | struct sockaddr_in local; |
144 | socklen_t local_len = sizeof(local); | 144 | socklen_t local_len = sizeof(local); |
@@ -198,15 +198,15 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp) | |||
198 | /*-------------------------------------------------------------------------*\ | 198 | /*-------------------------------------------------------------------------*\ |
199 | * Tries to create a new inet socket | 199 | * Tries to create a new inet socket |
200 | \*-------------------------------------------------------------------------*/ | 200 | \*-------------------------------------------------------------------------*/ |
201 | const char *inet_trycreate(p_sock ps, int type) { | 201 | const char *inet_trycreate(p_socket ps, int type) { |
202 | return sock_strerror(sock_create(ps, AF_INET, type, 0)); | 202 | return socket_strerror(socket_create(ps, AF_INET, type, 0)); |
203 | } | 203 | } |
204 | 204 | ||
205 | /*-------------------------------------------------------------------------*\ | 205 | /*-------------------------------------------------------------------------*\ |
206 | * Tries to connect to remote address (address, port) | 206 | * Tries to connect to remote address (address, port) |
207 | \*-------------------------------------------------------------------------*/ | 207 | \*-------------------------------------------------------------------------*/ |
208 | const char *inet_tryconnect(p_sock ps, const char *address, | 208 | const char *inet_tryconnect(p_socket ps, const char *address, |
209 | unsigned short port, p_tm tm) | 209 | unsigned short port, p_timeout tm) |
210 | { | 210 | { |
211 | struct sockaddr_in remote; | 211 | struct sockaddr_in remote; |
212 | int err; | 212 | int err; |
@@ -217,20 +217,20 @@ const char *inet_tryconnect(p_sock ps, const char *address, | |||
217 | if (!inet_aton(address, &remote.sin_addr)) { | 217 | if (!inet_aton(address, &remote.sin_addr)) { |
218 | struct hostent *hp = NULL; | 218 | struct hostent *hp = NULL; |
219 | struct in_addr **addr; | 219 | struct in_addr **addr; |
220 | err = sock_gethostbyname(address, &hp); | 220 | err = socket_gethostbyname(address, &hp); |
221 | if (err != IO_DONE) return sock_hoststrerror(err); | 221 | if (err != IO_DONE) return socket_hoststrerror(err); |
222 | addr = (struct in_addr **) hp->h_addr_list; | 222 | addr = (struct in_addr **) hp->h_addr_list; |
223 | memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); | 223 | memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); |
224 | } | 224 | } |
225 | } else remote.sin_family = AF_UNSPEC; | 225 | } else remote.sin_family = AF_UNSPEC; |
226 | err = sock_connect(ps, (SA *) &remote, sizeof(remote), tm); | 226 | err = socket_connect(ps, (SA *) &remote, sizeof(remote), tm); |
227 | return sock_strerror(err); | 227 | return socket_strerror(err); |
228 | } | 228 | } |
229 | 229 | ||
230 | /*-------------------------------------------------------------------------*\ | 230 | /*-------------------------------------------------------------------------*\ |
231 | * Tries to bind socket to (address, port) | 231 | * Tries to bind socket to (address, port) |
232 | \*-------------------------------------------------------------------------*/ | 232 | \*-------------------------------------------------------------------------*/ |
233 | const char *inet_trybind(p_sock ps, const char *address, unsigned short port) | 233 | const char *inet_trybind(p_socket ps, const char *address, unsigned short port) |
234 | { | 234 | { |
235 | struct sockaddr_in local; | 235 | struct sockaddr_in local; |
236 | int err; | 236 | int err; |
@@ -242,14 +242,14 @@ const char *inet_trybind(p_sock ps, const char *address, unsigned short port) | |||
242 | if (strcmp(address, "*") && !inet_aton(address, &local.sin_addr)) { | 242 | if (strcmp(address, "*") && !inet_aton(address, &local.sin_addr)) { |
243 | struct hostent *hp = NULL; | 243 | struct hostent *hp = NULL; |
244 | struct in_addr **addr; | 244 | struct in_addr **addr; |
245 | err = sock_gethostbyname(address, &hp); | 245 | err = socket_gethostbyname(address, &hp); |
246 | if (err != IO_DONE) return sock_hoststrerror(err); | 246 | if (err != IO_DONE) return socket_hoststrerror(err); |
247 | addr = (struct in_addr **) hp->h_addr_list; | 247 | addr = (struct in_addr **) hp->h_addr_list; |
248 | memcpy(&local.sin_addr, *addr, sizeof(struct in_addr)); | 248 | memcpy(&local.sin_addr, *addr, sizeof(struct in_addr)); |
249 | } | 249 | } |
250 | err = sock_bind(ps, (SA *) &local, sizeof(local)); | 250 | err = socket_bind(ps, (SA *) &local, sizeof(local)); |
251 | if (err != IO_DONE) sock_destroy(ps); | 251 | if (err != IO_DONE) socket_destroy(ps); |
252 | return sock_strerror(err); | 252 | return socket_strerror(err); |
253 | } | 253 | } |
254 | 254 | ||
255 | /*-------------------------------------------------------------------------*\ | 255 | /*-------------------------------------------------------------------------*\ |
@@ -26,14 +26,14 @@ | |||
26 | 26 | ||
27 | int inet_open(lua_State *L); | 27 | int inet_open(lua_State *L); |
28 | 28 | ||
29 | const char *inet_trycreate(p_sock ps, int type); | 29 | const char *inet_trycreate(p_socket ps, int type); |
30 | const char *inet_tryconnect(p_sock ps, const char *address, | 30 | const char *inet_tryconnect(p_socket ps, const char *address, |
31 | unsigned short port, p_tm tm); | 31 | unsigned short port, p_timeout tm); |
32 | const char *inet_trybind(p_sock ps, const char *address, | 32 | const char *inet_trybind(p_socket ps, const char *address, |
33 | unsigned short port); | 33 | unsigned short port); |
34 | 34 | ||
35 | int inet_meth_getpeername(lua_State *L, p_sock ps); | 35 | int inet_meth_getpeername(lua_State *L, p_socket ps); |
36 | int inet_meth_getsockname(lua_State *L, p_sock ps); | 36 | int inet_meth_getsockname(lua_State *L, p_socket ps); |
37 | 37 | ||
38 | #ifdef INET_ATON | 38 | #ifdef INET_ATON |
39 | int inet_aton(const char *cp, struct in_addr *inp); | 39 | int inet_aton(const char *cp, struct in_addr *inp); |
@@ -39,7 +39,7 @@ typedef int (*p_send) ( | |||
39 | const char *data, /* pointer to buffer with data to send */ | 39 | const char *data, /* pointer to buffer with data to send */ |
40 | size_t count, /* number of bytes to send from buffer */ | 40 | size_t count, /* number of bytes to send from buffer */ |
41 | size_t *sent, /* number of bytes sent uppon return */ | 41 | size_t *sent, /* number of bytes sent uppon return */ |
42 | p_tm tm /* timeout control */ | 42 | p_timeout tm /* timeout control */ |
43 | ); | 43 | ); |
44 | 44 | ||
45 | /* interface to recv function */ | 45 | /* interface to recv function */ |
@@ -48,7 +48,7 @@ typedef int (*p_recv) ( | |||
48 | char *data, /* pointer to buffer where data will be writen */ | 48 | char *data, /* pointer to buffer where data will be writen */ |
49 | size_t count, /* number of bytes to receive into buffer */ | 49 | size_t count, /* number of bytes to receive into buffer */ |
50 | size_t *got, /* number of bytes received uppon return */ | 50 | size_t *got, /* number of bytes received uppon return */ |
51 | p_tm tm /* timeout control */ | 51 | p_timeout tm /* timeout control */ |
52 | ); | 52 | ); |
53 | 53 | ||
54 | /* IO driver definition */ | 54 | /* IO driver definition */ |
diff --git a/src/ltn12.lua b/src/ltn12.lua index 733422d..2c16253 100644 --- a/src/ltn12.lua +++ b/src/ltn12.lua | |||
@@ -134,33 +134,49 @@ function source.rewind(src) | |||
134 | end | 134 | end |
135 | end | 135 | end |
136 | 136 | ||
137 | -- chains a source with a filter | ||
138 | function source.chain(src, f) | 137 | function source.chain(src, f) |
139 | base.assert(src and f) | 138 | base.assert(src and f) |
140 | local last_in, last_out = "", "" | 139 | local last_in, last_out = "", "" |
140 | local state = "feeding" | ||
141 | local err | ||
141 | return function() | 142 | return function() |
142 | if last_out == "" then | 143 | if not last_out then |
143 | while true do | 144 | base.error('source is empty!', 2) |
144 | local err | 145 | end |
146 | while true do | ||
147 | if state == "feeding" then | ||
145 | last_in, err = src() | 148 | last_in, err = src() |
146 | if err then return nil, err end | 149 | if err then return nil, err end |
147 | last_out = f(last_in) | 150 | last_out = f(last_in) |
148 | if last_out ~= "" then return last_out end | 151 | if not last_out then |
149 | if not last_in then | 152 | if last_in then |
150 | base.error('filter returned inappropriate ""') | 153 | base.error('filter returned inappropriate nil') |
154 | else | ||
155 | return nil | ||
156 | end | ||
157 | elseif last_out ~= "" then | ||
158 | state = "eating" | ||
159 | if last_in then last_in = "" end | ||
160 | return last_out | ||
161 | end | ||
162 | else | ||
163 | last_out = f(last_in) | ||
164 | if last_out == "" then | ||
165 | if last_in == "" then | ||
166 | state = "feeding" | ||
167 | else | ||
168 | base.error('filter returned ""') | ||
169 | end | ||
170 | elseif not last_out then | ||
171 | if last_in then | ||
172 | base.error('filter returned inappropriate nil') | ||
173 | else | ||
174 | return nil | ||
175 | end | ||
176 | else | ||
177 | return last_out | ||
151 | end | 178 | end |
152 | end | 179 | end |
153 | elseif last_out then | ||
154 | last_out = f(last_in and "") | ||
155 | if last_in and not last_out then | ||
156 | base.error('filter returned inappropriate nil') | ||
157 | end | ||
158 | if last_out == "" and not last_in then | ||
159 | base.error(base.tostring(f) .. ' returned inappropriate ""') | ||
160 | end | ||
161 | return last_out | ||
162 | else | ||
163 | base.error("source is empty", 2) | ||
164 | end | 180 | end |
165 | end | 181 | end |
166 | end | 182 | end |
diff --git a/src/luasocket.c b/src/luasocket.c index 434b5b7..142aa95 100644 --- a/src/luasocket.c +++ b/src/luasocket.c | |||
@@ -48,10 +48,10 @@ static int base_open(lua_State *L); | |||
48 | * Modules and functions | 48 | * Modules and functions |
49 | \*-------------------------------------------------------------------------*/ | 49 | \*-------------------------------------------------------------------------*/ |
50 | static const luaL_reg mod[] = { | 50 | static const luaL_reg mod[] = { |
51 | {"auxiliar", aux_open}, | 51 | {"auxiliar", auxiliar_open}, |
52 | {"except", except_open}, | 52 | {"except", except_open}, |
53 | {"timeout", tm_open}, | 53 | {"timeout", timeout_open}, |
54 | {"buffer", buf_open}, | 54 | {"buffer", buffer_open}, |
55 | {"inet", inet_open}, | 55 | {"inet", inet_open}, |
56 | {"tcp", tcp_open}, | 56 | {"tcp", tcp_open}, |
57 | {"udp", udp_open}, | 57 | {"udp", udp_open}, |
@@ -79,7 +79,7 @@ static int global_skip(lua_State *L) { | |||
79 | \*-------------------------------------------------------------------------*/ | 79 | \*-------------------------------------------------------------------------*/ |
80 | static int global_unload(lua_State *L) { | 80 | static int global_unload(lua_State *L) { |
81 | (void) L; | 81 | (void) L; |
82 | sock_close(); | 82 | socket_close(); |
83 | return 0; | 83 | return 0; |
84 | } | 84 | } |
85 | 85 | ||
@@ -87,7 +87,7 @@ static int global_unload(lua_State *L) { | |||
87 | * Setup basic stuff. | 87 | * Setup basic stuff. |
88 | \*-------------------------------------------------------------------------*/ | 88 | \*-------------------------------------------------------------------------*/ |
89 | static int base_open(lua_State *L) { | 89 | static int base_open(lua_State *L) { |
90 | if (sock_open()) { | 90 | if (socket_open()) { |
91 | /* export functions (and leave namespace table on top of stack) */ | 91 | /* export functions (and leave namespace table on top of stack) */ |
92 | luaL_openlib(L, "socket", func, 0); | 92 | luaL_openlib(L, "socket", func, 0); |
93 | #ifdef LUASOCKET_DEBUG | 93 | #ifdef LUASOCKET_DEBUG |
diff --git a/src/options.c b/src/options.c index 5236a3f..0f1ca2c 100644 --- a/src/options.c +++ b/src/options.c | |||
@@ -16,9 +16,9 @@ | |||
16 | /*=========================================================================*\ | 16 | /*=========================================================================*\ |
17 | * Internal functions prototypes | 17 | * Internal functions prototypes |
18 | \*=========================================================================*/ | 18 | \*=========================================================================*/ |
19 | static int opt_setmembership(lua_State *L, p_sock ps, int level, int name); | 19 | static int opt_setmembership(lua_State *L, p_socket ps, int level, int name); |
20 | static int opt_setboolean(lua_State *L, p_sock ps, int level, int name); | 20 | static int opt_setboolean(lua_State *L, p_socket ps, int level, int name); |
21 | static int opt_set(lua_State *L, p_sock ps, int level, int name, | 21 | static int opt_set(lua_State *L, p_socket ps, int level, int name, |
22 | void *val, int len); | 22 | void *val, int len); |
23 | 23 | ||
24 | /*=========================================================================*\ | 24 | /*=========================================================================*\ |
@@ -27,7 +27,7 @@ static int opt_set(lua_State *L, p_sock ps, int level, int name, | |||
27 | /*-------------------------------------------------------------------------*\ | 27 | /*-------------------------------------------------------------------------*\ |
28 | * Calls appropriate option handler | 28 | * Calls appropriate option handler |
29 | \*-------------------------------------------------------------------------*/ | 29 | \*-------------------------------------------------------------------------*/ |
30 | int opt_meth_setoption(lua_State *L, p_opt opt, p_sock ps) | 30 | int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps) |
31 | { | 31 | { |
32 | const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ | 32 | const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ |
33 | while (opt->name && strcmp(name, opt->name)) | 33 | while (opt->name && strcmp(name, opt->name)) |
@@ -41,38 +41,38 @@ int opt_meth_setoption(lua_State *L, p_opt opt, p_sock ps) | |||
41 | } | 41 | } |
42 | 42 | ||
43 | /* enables reuse of local address */ | 43 | /* enables reuse of local address */ |
44 | int opt_reuseaddr(lua_State *L, p_sock ps) | 44 | int opt_reuseaddr(lua_State *L, p_socket ps) |
45 | { | 45 | { |
46 | return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); | 46 | return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); |
47 | } | 47 | } |
48 | 48 | ||
49 | /* disables the Naggle algorithm */ | 49 | /* disables the Naggle algorithm */ |
50 | int opt_tcp_nodelay(lua_State *L, p_sock ps) | 50 | int opt_tcp_nodelay(lua_State *L, p_socket ps) |
51 | { | 51 | { |
52 | return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); | 52 | return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); |
53 | } | 53 | } |
54 | 54 | ||
55 | int opt_keepalive(lua_State *L, p_sock ps) | 55 | int opt_keepalive(lua_State *L, p_socket ps) |
56 | { | 56 | { |
57 | return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); | 57 | return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); |
58 | } | 58 | } |
59 | 59 | ||
60 | int opt_dontroute(lua_State *L, p_sock ps) | 60 | int opt_dontroute(lua_State *L, p_socket ps) |
61 | { | 61 | { |
62 | return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); | 62 | return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); |
63 | } | 63 | } |
64 | 64 | ||
65 | int opt_broadcast(lua_State *L, p_sock ps) | 65 | int opt_broadcast(lua_State *L, p_socket ps) |
66 | { | 66 | { |
67 | return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST); | 67 | return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST); |
68 | } | 68 | } |
69 | 69 | ||
70 | int opt_ip_multicast_loop(lua_State *L, p_sock ps) | 70 | int opt_ip_multicast_loop(lua_State *L, p_socket ps) |
71 | { | 71 | { |
72 | return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); | 72 | return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); |
73 | } | 73 | } |
74 | 74 | ||
75 | int opt_linger(lua_State *L, p_sock ps) | 75 | int opt_linger(lua_State *L, p_socket ps) |
76 | { | 76 | { |
77 | struct linger li; /* obj, name, table */ | 77 | struct linger li; /* obj, name, table */ |
78 | if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); | 78 | if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); |
@@ -89,18 +89,18 @@ int opt_linger(lua_State *L, p_sock ps) | |||
89 | return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li)); | 89 | return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li)); |
90 | } | 90 | } |
91 | 91 | ||
92 | int opt_ip_multicast_ttl(lua_State *L, p_sock ps) | 92 | int opt_ip_multicast_ttl(lua_State *L, p_socket ps) |
93 | { | 93 | { |
94 | int val = (int) luaL_checknumber(L, 3); /* obj, name, int */ | 94 | int val = (int) luaL_checknumber(L, 3); /* obj, name, int */ |
95 | return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &val, sizeof(val)); | 95 | return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &val, sizeof(val)); |
96 | } | 96 | } |
97 | 97 | ||
98 | int opt_ip_add_membership(lua_State *L, p_sock ps) | 98 | int opt_ip_add_membership(lua_State *L, p_socket ps) |
99 | { | 99 | { |
100 | return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP); | 100 | return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP); |
101 | } | 101 | } |
102 | 102 | ||
103 | int opt_ip_drop_membersip(lua_State *L, p_sock ps) | 103 | int opt_ip_drop_membersip(lua_State *L, p_socket ps) |
104 | { | 104 | { |
105 | return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP); | 105 | return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP); |
106 | } | 106 | } |
@@ -108,7 +108,7 @@ int opt_ip_drop_membersip(lua_State *L, p_sock ps) | |||
108 | /*=========================================================================*\ | 108 | /*=========================================================================*\ |
109 | * Auxiliar functions | 109 | * Auxiliar functions |
110 | \*=========================================================================*/ | 110 | \*=========================================================================*/ |
111 | static int opt_setmembership(lua_State *L, p_sock ps, int level, int name) | 111 | static int opt_setmembership(lua_State *L, p_socket ps, int level, int name) |
112 | { | 112 | { |
113 | struct ip_mreq val; /* obj, name, table */ | 113 | struct ip_mreq val; /* obj, name, table */ |
114 | if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); | 114 | if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); |
@@ -130,7 +130,7 @@ static int opt_setmembership(lua_State *L, p_sock ps, int level, int name) | |||
130 | } | 130 | } |
131 | 131 | ||
132 | static | 132 | static |
133 | int opt_set(lua_State *L, p_sock ps, int level, int name, void *val, int len) | 133 | int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len) |
134 | { | 134 | { |
135 | if (setsockopt(*ps, level, name, (char *) val, len) < 0) { | 135 | if (setsockopt(*ps, level, name, (char *) val, len) < 0) { |
136 | lua_pushnil(L); | 136 | lua_pushnil(L); |
@@ -141,9 +141,9 @@ int opt_set(lua_State *L, p_sock ps, int level, int name, void *val, int len) | |||
141 | return 1; | 141 | return 1; |
142 | } | 142 | } |
143 | 143 | ||
144 | static int opt_setboolean(lua_State *L, p_sock ps, int level, int name) | 144 | static int opt_setboolean(lua_State *L, p_socket ps, int level, int name) |
145 | { | 145 | { |
146 | int val = aux_checkboolean(L, 3); /* obj, name, bool */ | 146 | int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */ |
147 | return opt_set(L, ps, level, name, (char *) &val, sizeof(val)); | 147 | return opt_set(L, ps, level, name, (char *) &val, sizeof(val)); |
148 | } | 148 | } |
149 | 149 | ||
diff --git a/src/options.h b/src/options.h index 6ebf1f6..900761e 100644 --- a/src/options.h +++ b/src/options.h | |||
@@ -16,24 +16,24 @@ | |||
16 | /* option registry */ | 16 | /* option registry */ |
17 | typedef struct t_opt { | 17 | typedef struct t_opt { |
18 | const char *name; | 18 | const char *name; |
19 | int (*func)(lua_State *L, p_sock ps); | 19 | int (*func)(lua_State *L, p_socket ps); |
20 | } t_opt; | 20 | } t_opt; |
21 | typedef t_opt *p_opt; | 21 | typedef t_opt *p_opt; |
22 | 22 | ||
23 | /* supported options */ | 23 | /* supported options */ |
24 | int opt_dontroute(lua_State *L, p_sock ps); | 24 | int opt_dontroute(lua_State *L, p_socket ps); |
25 | int opt_broadcast(lua_State *L, p_sock ps); | 25 | int opt_broadcast(lua_State *L, p_socket ps); |
26 | int opt_reuseaddr(lua_State *L, p_sock ps); | 26 | int opt_reuseaddr(lua_State *L, p_socket ps); |
27 | int opt_tcp_nodelay(lua_State *L, p_sock ps); | 27 | int opt_tcp_nodelay(lua_State *L, p_socket ps); |
28 | int opt_keepalive(lua_State *L, p_sock ps); | 28 | int opt_keepalive(lua_State *L, p_socket ps); |
29 | int opt_linger(lua_State *L, p_sock ps); | 29 | int opt_linger(lua_State *L, p_socket ps); |
30 | int opt_reuseaddr(lua_State *L, p_sock ps); | 30 | int opt_reuseaddr(lua_State *L, p_socket ps); |
31 | int opt_ip_multicast_ttl(lua_State *L, p_sock ps); | 31 | int opt_ip_multicast_ttl(lua_State *L, p_socket ps); |
32 | int opt_ip_multicast_loop(lua_State *L, p_sock ps); | 32 | int opt_ip_multicast_loop(lua_State *L, p_socket ps); |
33 | int opt_ip_add_membership(lua_State *L, p_sock ps); | 33 | int opt_ip_add_membership(lua_State *L, p_socket ps); |
34 | int opt_ip_drop_membersip(lua_State *L, p_sock ps); | 34 | int opt_ip_drop_membersip(lua_State *L, p_socket ps); |
35 | 35 | ||
36 | /* invokes the appropriate option handler */ | 36 | /* invokes the appropriate option handler */ |
37 | int opt_meth_setoption(lua_State *L, p_opt opt, p_sock ps); | 37 | int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps); |
38 | 38 | ||
39 | #endif | 39 | #endif |
diff --git a/src/select.c b/src/select.c index d28ade1..5a3d502 100644 --- a/src/select.c +++ b/src/select.c | |||
@@ -51,7 +51,7 @@ int select_open(lua_State *L) { | |||
51 | static int global_select(lua_State *L) { | 51 | static int global_select(lua_State *L) { |
52 | int rtab, wtab, itab, max_fd, ret, ndirty; | 52 | int rtab, wtab, itab, max_fd, ret, ndirty; |
53 | fd_set rset, wset; | 53 | fd_set rset, wset; |
54 | t_tm tm; | 54 | t_timeout tm; |
55 | double t = luaL_optnumber(L, 3, -1); | 55 | double t = luaL_optnumber(L, 3, -1); |
56 | FD_ZERO(&rset); FD_ZERO(&wset); | 56 | FD_ZERO(&rset); FD_ZERO(&wset); |
57 | lua_settop(L, 3); | 57 | lua_settop(L, 3); |
@@ -61,10 +61,10 @@ static int global_select(lua_State *L) { | |||
61 | max_fd = collect_fd(L, 1, -1, itab, &rset); | 61 | max_fd = collect_fd(L, 1, -1, itab, &rset); |
62 | ndirty = check_dirty(L, 1, rtab, &rset); | 62 | ndirty = check_dirty(L, 1, rtab, &rset); |
63 | t = ndirty > 0? 0.0: t; | 63 | t = ndirty > 0? 0.0: t; |
64 | tm_init(&tm, t, -1); | 64 | timeout_init(&tm, t, -1); |
65 | tm_markstart(&tm); | 65 | timeout_markstart(&tm); |
66 | max_fd = collect_fd(L, 2, max_fd, itab, &wset); | 66 | max_fd = collect_fd(L, 2, max_fd, itab, &wset); |
67 | ret = sock_select(max_fd+1, &rset, &wset, NULL, &tm); | 67 | ret = socket_select(max_fd+1, &rset, &wset, NULL, &tm); |
68 | if (ret > 0 || ndirty > 0) { | 68 | if (ret > 0 || ndirty > 0) { |
69 | return_fd(L, &rset, max_fd+1, itab, rtab, ndirty); | 69 | return_fd(L, &rset, max_fd+1, itab, rtab, ndirty); |
70 | return_fd(L, &wset, max_fd+1, itab, wtab, 0); | 70 | return_fd(L, &wset, max_fd+1, itab, wtab, 0); |
diff --git a/src/socket.h b/src/socket.h index ad12b1b..a599d8a 100644 --- a/src/socket.h +++ b/src/socket.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef SOCK_H | 1 | #ifndef SOCKET_H |
2 | #define SOCK_H | 2 | #define SOCKET_H |
3 | /*=========================================================================*\ | 3 | /*=========================================================================*\ |
4 | * Socket compatibilization module | 4 | * Socket compatibilization module |
5 | * LuaSocket toolkit | 5 | * LuaSocket toolkit |
@@ -37,37 +37,39 @@ typedef struct sockaddr SA; | |||
37 | * Functions bellow implement a comfortable platform independent | 37 | * Functions bellow implement a comfortable platform independent |
38 | * interface to sockets | 38 | * interface to sockets |
39 | \*=========================================================================*/ | 39 | \*=========================================================================*/ |
40 | int sock_open(void); | 40 | int socket_open(void); |
41 | int sock_close(void); | 41 | int socket_close(void); |
42 | void sock_destroy(p_sock ps); | 42 | void socket_destroy(p_socket ps); |
43 | void sock_shutdown(p_sock ps, int how); | 43 | void socket_shutdown(p_socket ps, int how); |
44 | int sock_sendto(p_sock ps, const char *data, size_t count, | 44 | int socket_sendto(p_socket ps, const char *data, size_t count, |
45 | size_t *sent, SA *addr, socklen_t addr_len, p_tm tm); | 45 | size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm); |
46 | int sock_recvfrom(p_sock ps, char *data, size_t count, | 46 | int socket_recvfrom(p_socket ps, char *data, size_t count, |
47 | size_t *got, SA *addr, socklen_t *addr_len, p_tm tm); | 47 | size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm); |
48 | 48 | ||
49 | void sock_setnonblocking(p_sock ps); | 49 | void socket_setnonblocking(p_socket ps); |
50 | void sock_setblocking(p_sock ps); | 50 | void socket_setblocking(p_socket ps); |
51 | 51 | ||
52 | int sock_waitfd(p_sock ps, int sw, p_tm tm); | 52 | int socket_waitfd(p_socket ps, int sw, p_timeout tm); |
53 | int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm); | 53 | int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm); |
54 | 54 | ||
55 | int sock_connect(p_sock ps, SA *addr, socklen_t addr_len, p_tm tm); | 55 | int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm); |
56 | int sock_create(p_sock ps, int domain, int type, int protocol); | 56 | int socket_create(p_socket ps, int domain, int type, int protocol); |
57 | int sock_bind(p_sock ps, SA *addr, socklen_t addr_len); | 57 | int socket_bind(p_socket ps, SA *addr, socklen_t addr_len); |
58 | int sock_listen(p_sock ps, int backlog); | 58 | int socket_listen(p_socket ps, int backlog); |
59 | int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *addr_len, p_tm tm); | 59 | int socket_accept(p_socket ps, p_socket pa, SA *addr, |
60 | socklen_t *addr_len, p_timeout tm); | ||
60 | 61 | ||
61 | const char *sock_hoststrerror(int err); | 62 | const char *socket_hoststrerror(int err); |
62 | const char *sock_strerror(int err); | 63 | const char *socket_strerror(int err); |
63 | 64 | ||
64 | /* these are perfect to use with the io abstraction module | 65 | /* these are perfect to use with the io abstraction module |
65 | and the buffered input module */ | 66 | and the buffered input module */ |
66 | int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm); | 67 | int socket_send(p_socket ps, const char *data, size_t count, |
67 | int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm); | 68 | size_t *sent, p_timeout tm); |
68 | const char *sock_ioerror(p_sock ps, int err); | 69 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm); |
70 | const char *socket_ioerror(p_socket ps, int err); | ||
69 | 71 | ||
70 | int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp); | 72 | int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp); |
71 | int sock_gethostbyname(const char *addr, struct hostent **hp); | 73 | int socket_gethostbyname(const char *addr, struct hostent **hp); |
72 | 74 | ||
73 | #endif /* SOCK_H */ | 75 | #endif /* SOCKET_H */ |
@@ -40,7 +40,7 @@ static int meth_dirty(lua_State *L); | |||
40 | /* tcp object methods */ | 40 | /* tcp object methods */ |
41 | static luaL_reg tcp[] = { | 41 | static luaL_reg tcp[] = { |
42 | {"__gc", meth_close}, | 42 | {"__gc", meth_close}, |
43 | {"__tostring", aux_tostring}, | 43 | {"__tostring", auxiliar_tostring}, |
44 | {"accept", meth_accept}, | 44 | {"accept", meth_accept}, |
45 | {"bind", meth_bind}, | 45 | {"bind", meth_bind}, |
46 | {"close", meth_close}, | 46 | {"close", meth_close}, |
@@ -84,13 +84,13 @@ static luaL_reg func[] = { | |||
84 | int tcp_open(lua_State *L) | 84 | int tcp_open(lua_State *L) |
85 | { | 85 | { |
86 | /* create classes */ | 86 | /* create classes */ |
87 | aux_newclass(L, "tcp{master}", tcp); | 87 | auxiliar_newclass(L, "tcp{master}", tcp); |
88 | aux_newclass(L, "tcp{client}", tcp); | 88 | auxiliar_newclass(L, "tcp{client}", tcp); |
89 | aux_newclass(L, "tcp{server}", tcp); | 89 | auxiliar_newclass(L, "tcp{server}", tcp); |
90 | /* create class groups */ | 90 | /* create class groups */ |
91 | aux_add2group(L, "tcp{master}", "tcp{any}"); | 91 | auxiliar_add2group(L, "tcp{master}", "tcp{any}"); |
92 | aux_add2group(L, "tcp{client}", "tcp{any}"); | 92 | auxiliar_add2group(L, "tcp{client}", "tcp{any}"); |
93 | aux_add2group(L, "tcp{server}", "tcp{any}"); | 93 | auxiliar_add2group(L, "tcp{server}", "tcp{any}"); |
94 | /* define library functions */ | 94 | /* define library functions */ |
95 | luaL_openlib(L, NULL, func, 0); | 95 | luaL_openlib(L, NULL, func, 0); |
96 | return 0; | 96 | return 0; |
@@ -103,23 +103,23 @@ int tcp_open(lua_State *L) | |||
103 | * Just call buffered IO methods | 103 | * Just call buffered IO methods |
104 | \*-------------------------------------------------------------------------*/ | 104 | \*-------------------------------------------------------------------------*/ |
105 | static int meth_send(lua_State *L) { | 105 | static int meth_send(lua_State *L) { |
106 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); | 106 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); |
107 | return buf_meth_send(L, &tcp->buf); | 107 | return buffer_meth_send(L, &tcp->buf); |
108 | } | 108 | } |
109 | 109 | ||
110 | static int meth_receive(lua_State *L) { | 110 | static int meth_receive(lua_State *L) { |
111 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); | 111 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); |
112 | return buf_meth_receive(L, &tcp->buf); | 112 | return buffer_meth_receive(L, &tcp->buf); |
113 | } | 113 | } |
114 | 114 | ||
115 | static int meth_getstats(lua_State *L) { | 115 | static int meth_getstats(lua_State *L) { |
116 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); | 116 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); |
117 | return buf_meth_getstats(L, &tcp->buf); | 117 | return buffer_meth_getstats(L, &tcp->buf); |
118 | } | 118 | } |
119 | 119 | ||
120 | static int meth_setstats(lua_State *L) { | 120 | static int meth_setstats(lua_State *L) { |
121 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); | 121 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); |
122 | return buf_meth_setstats(L, &tcp->buf); | 122 | return buffer_meth_setstats(L, &tcp->buf); |
123 | } | 123 | } |
124 | 124 | ||
125 | /*-------------------------------------------------------------------------*\ | 125 | /*-------------------------------------------------------------------------*\ |
@@ -127,7 +127,7 @@ static int meth_setstats(lua_State *L) { | |||
127 | \*-------------------------------------------------------------------------*/ | 127 | \*-------------------------------------------------------------------------*/ |
128 | static int meth_setoption(lua_State *L) | 128 | static int meth_setoption(lua_State *L) |
129 | { | 129 | { |
130 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 130 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
131 | return opt_meth_setoption(L, opt, &tcp->sock); | 131 | return opt_meth_setoption(L, opt, &tcp->sock); |
132 | } | 132 | } |
133 | 133 | ||
@@ -136,7 +136,7 @@ static int meth_setoption(lua_State *L) | |||
136 | \*-------------------------------------------------------------------------*/ | 136 | \*-------------------------------------------------------------------------*/ |
137 | static int meth_getfd(lua_State *L) | 137 | static int meth_getfd(lua_State *L) |
138 | { | 138 | { |
139 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 139 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
140 | lua_pushnumber(L, (int) tcp->sock); | 140 | lua_pushnumber(L, (int) tcp->sock); |
141 | return 1; | 141 | return 1; |
142 | } | 142 | } |
@@ -144,15 +144,15 @@ static int meth_getfd(lua_State *L) | |||
144 | /* this is very dangerous, but can be handy for those that are brave enough */ | 144 | /* this is very dangerous, but can be handy for those that are brave enough */ |
145 | static int meth_setfd(lua_State *L) | 145 | static int meth_setfd(lua_State *L) |
146 | { | 146 | { |
147 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 147 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
148 | tcp->sock = (t_sock) luaL_checknumber(L, 2); | 148 | tcp->sock = (t_socket) luaL_checknumber(L, 2); |
149 | return 0; | 149 | return 0; |
150 | } | 150 | } |
151 | 151 | ||
152 | static int meth_dirty(lua_State *L) | 152 | static int meth_dirty(lua_State *L) |
153 | { | 153 | { |
154 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 154 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
155 | lua_pushboolean(L, !buf_isempty(&tcp->buf)); | 155 | lua_pushboolean(L, !buffer_isempty(&tcp->buf)); |
156 | return 1; | 156 | return 1; |
157 | } | 157 | } |
158 | 158 | ||
@@ -162,25 +162,25 @@ static int meth_dirty(lua_State *L) | |||
162 | \*-------------------------------------------------------------------------*/ | 162 | \*-------------------------------------------------------------------------*/ |
163 | static int meth_accept(lua_State *L) | 163 | static int meth_accept(lua_State *L) |
164 | { | 164 | { |
165 | p_tcp server = (p_tcp) aux_checkclass(L, "tcp{server}", 1); | 165 | p_tcp server = (p_tcp) auxiliar_checkclass(L, "tcp{server}", 1); |
166 | p_tm tm = tm_markstart(&server->tm); | 166 | p_timeout tm = timeout_markstart(&server->tm); |
167 | t_sock sock; | 167 | t_socket sock; |
168 | int err = sock_accept(&server->sock, &sock, NULL, NULL, tm); | 168 | int err = socket_accept(&server->sock, &sock, NULL, NULL, tm); |
169 | /* if successful, push client socket */ | 169 | /* if successful, push client socket */ |
170 | if (err == IO_DONE) { | 170 | if (err == IO_DONE) { |
171 | p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); | 171 | p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); |
172 | aux_setclass(L, "tcp{client}", -1); | 172 | auxiliar_setclass(L, "tcp{client}", -1); |
173 | /* initialize structure fields */ | 173 | /* initialize structure fields */ |
174 | sock_setnonblocking(&sock); | 174 | socket_setnonblocking(&sock); |
175 | clnt->sock = sock; | 175 | clnt->sock = sock; |
176 | io_init(&clnt->io, (p_send) sock_send, (p_recv) sock_recv, | 176 | io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv, |
177 | (p_error) sock_ioerror, &clnt->sock); | 177 | (p_error) socket_ioerror, &clnt->sock); |
178 | tm_init(&clnt->tm, -1, -1); | 178 | timeout_init(&clnt->tm, -1, -1); |
179 | buf_init(&clnt->buf, &clnt->io, &clnt->tm); | 179 | buffer_init(&clnt->buf, &clnt->io, &clnt->tm); |
180 | return 1; | 180 | return 1; |
181 | } else { | 181 | } else { |
182 | lua_pushnil(L); | 182 | lua_pushnil(L); |
183 | lua_pushstring(L, sock_strerror(err)); | 183 | lua_pushstring(L, socket_strerror(err)); |
184 | return 2; | 184 | return 2; |
185 | } | 185 | } |
186 | } | 186 | } |
@@ -190,7 +190,7 @@ static int meth_accept(lua_State *L) | |||
190 | \*-------------------------------------------------------------------------*/ | 190 | \*-------------------------------------------------------------------------*/ |
191 | static int meth_bind(lua_State *L) | 191 | static int meth_bind(lua_State *L) |
192 | { | 192 | { |
193 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{master}", 1); | 193 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1); |
194 | const char *address = luaL_checkstring(L, 2); | 194 | const char *address = luaL_checkstring(L, 2); |
195 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); | 195 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); |
196 | const char *err = inet_trybind(&tcp->sock, address, port); | 196 | const char *err = inet_trybind(&tcp->sock, address, port); |
@@ -208,13 +208,13 @@ static int meth_bind(lua_State *L) | |||
208 | \*-------------------------------------------------------------------------*/ | 208 | \*-------------------------------------------------------------------------*/ |
209 | static int meth_connect(lua_State *L) | 209 | static int meth_connect(lua_State *L) |
210 | { | 210 | { |
211 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 211 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
212 | const char *address = luaL_checkstring(L, 2); | 212 | const char *address = luaL_checkstring(L, 2); |
213 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); | 213 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); |
214 | p_tm tm = tm_markstart(&tcp->tm); | 214 | p_timeout tm = timeout_markstart(&tcp->tm); |
215 | const char *err = inet_tryconnect(&tcp->sock, address, port, tm); | 215 | const char *err = inet_tryconnect(&tcp->sock, address, port, tm); |
216 | /* have to set the class even if it failed due to non-blocking connects */ | 216 | /* have to set the class even if it failed due to non-blocking connects */ |
217 | aux_setclass(L, "tcp{client}", 1); | 217 | auxiliar_setclass(L, "tcp{client}", 1); |
218 | if (err) { | 218 | if (err) { |
219 | lua_pushnil(L); | 219 | lua_pushnil(L); |
220 | lua_pushstring(L, err); | 220 | lua_pushstring(L, err); |
@@ -230,8 +230,8 @@ static int meth_connect(lua_State *L) | |||
230 | \*-------------------------------------------------------------------------*/ | 230 | \*-------------------------------------------------------------------------*/ |
231 | static int meth_close(lua_State *L) | 231 | static int meth_close(lua_State *L) |
232 | { | 232 | { |
233 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 233 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
234 | sock_destroy(&tcp->sock); | 234 | socket_destroy(&tcp->sock); |
235 | lua_pushnumber(L, 1); | 235 | lua_pushnumber(L, 1); |
236 | return 1; | 236 | return 1; |
237 | } | 237 | } |
@@ -241,16 +241,16 @@ static int meth_close(lua_State *L) | |||
241 | \*-------------------------------------------------------------------------*/ | 241 | \*-------------------------------------------------------------------------*/ |
242 | static int meth_listen(lua_State *L) | 242 | static int meth_listen(lua_State *L) |
243 | { | 243 | { |
244 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{master}", 1); | 244 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1); |
245 | int backlog = (int) luaL_optnumber(L, 2, 32); | 245 | int backlog = (int) luaL_optnumber(L, 2, 32); |
246 | int err = sock_listen(&tcp->sock, backlog); | 246 | int err = socket_listen(&tcp->sock, backlog); |
247 | if (err != IO_DONE) { | 247 | if (err != IO_DONE) { |
248 | lua_pushnil(L); | 248 | lua_pushnil(L); |
249 | lua_pushstring(L, sock_strerror(err)); | 249 | lua_pushstring(L, socket_strerror(err)); |
250 | return 2; | 250 | return 2; |
251 | } | 251 | } |
252 | /* turn master object into a server object */ | 252 | /* turn master object into a server object */ |
253 | aux_setclass(L, "tcp{server}", 1); | 253 | auxiliar_setclass(L, "tcp{server}", 1); |
254 | lua_pushnumber(L, 1); | 254 | lua_pushnumber(L, 1); |
255 | return 1; | 255 | return 1; |
256 | } | 256 | } |
@@ -260,20 +260,20 @@ static int meth_listen(lua_State *L) | |||
260 | \*-------------------------------------------------------------------------*/ | 260 | \*-------------------------------------------------------------------------*/ |
261 | static int meth_shutdown(lua_State *L) | 261 | static int meth_shutdown(lua_State *L) |
262 | { | 262 | { |
263 | p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1); | 263 | p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); |
264 | const char *how = luaL_optstring(L, 2, "both"); | 264 | const char *how = luaL_optstring(L, 2, "both"); |
265 | switch (how[0]) { | 265 | switch (how[0]) { |
266 | case 'b': | 266 | case 'b': |
267 | if (strcmp(how, "both")) goto error; | 267 | if (strcmp(how, "both")) goto error; |
268 | sock_shutdown(&tcp->sock, 2); | 268 | socket_shutdown(&tcp->sock, 2); |
269 | break; | 269 | break; |
270 | case 's': | 270 | case 's': |
271 | if (strcmp(how, "send")) goto error; | 271 | if (strcmp(how, "send")) goto error; |
272 | sock_shutdown(&tcp->sock, 1); | 272 | socket_shutdown(&tcp->sock, 1); |
273 | break; | 273 | break; |
274 | case 'r': | 274 | case 'r': |
275 | if (strcmp(how, "receive")) goto error; | 275 | if (strcmp(how, "receive")) goto error; |
276 | sock_shutdown(&tcp->sock, 0); | 276 | socket_shutdown(&tcp->sock, 0); |
277 | break; | 277 | break; |
278 | } | 278 | } |
279 | lua_pushnumber(L, 1); | 279 | lua_pushnumber(L, 1); |
@@ -288,13 +288,13 @@ error: | |||
288 | \*-------------------------------------------------------------------------*/ | 288 | \*-------------------------------------------------------------------------*/ |
289 | static int meth_getpeername(lua_State *L) | 289 | static int meth_getpeername(lua_State *L) |
290 | { | 290 | { |
291 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 291 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
292 | return inet_meth_getpeername(L, &tcp->sock); | 292 | return inet_meth_getpeername(L, &tcp->sock); |
293 | } | 293 | } |
294 | 294 | ||
295 | static int meth_getsockname(lua_State *L) | 295 | static int meth_getsockname(lua_State *L) |
296 | { | 296 | { |
297 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 297 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
298 | return inet_meth_getsockname(L, &tcp->sock); | 298 | return inet_meth_getsockname(L, &tcp->sock); |
299 | } | 299 | } |
300 | 300 | ||
@@ -303,8 +303,8 @@ static int meth_getsockname(lua_State *L) | |||
303 | \*-------------------------------------------------------------------------*/ | 303 | \*-------------------------------------------------------------------------*/ |
304 | static int meth_settimeout(lua_State *L) | 304 | static int meth_settimeout(lua_State *L) |
305 | { | 305 | { |
306 | p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); | 306 | p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); |
307 | return tm_meth_settimeout(L, &tcp->tm); | 307 | return timeout_meth_settimeout(L, &tcp->tm); |
308 | } | 308 | } |
309 | 309 | ||
310 | /*=========================================================================*\ | 310 | /*=========================================================================*\ |
@@ -315,21 +315,21 @@ static int meth_settimeout(lua_State *L) | |||
315 | \*-------------------------------------------------------------------------*/ | 315 | \*-------------------------------------------------------------------------*/ |
316 | static int global_create(lua_State *L) | 316 | static int global_create(lua_State *L) |
317 | { | 317 | { |
318 | t_sock sock; | 318 | t_socket sock; |
319 | const char *err = inet_trycreate(&sock, SOCK_STREAM); | 319 | const char *err = inet_trycreate(&sock, SOCK_STREAM); |
320 | /* try to allocate a system socket */ | 320 | /* try to allocate a system socket */ |
321 | if (!err) { | 321 | if (!err) { |
322 | /* allocate tcp object */ | 322 | /* allocate tcp object */ |
323 | p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); | 323 | p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); |
324 | /* set its type as master object */ | 324 | /* set its type as master object */ |
325 | aux_setclass(L, "tcp{master}", -1); | 325 | auxiliar_setclass(L, "tcp{master}", -1); |
326 | /* initialize remaining structure fields */ | 326 | /* initialize remaining structure fields */ |
327 | sock_setnonblocking(&sock); | 327 | socket_setnonblocking(&sock); |
328 | tcp->sock = sock; | 328 | tcp->sock = sock; |
329 | io_init(&tcp->io, (p_send) sock_send, (p_recv) sock_recv, | 329 | io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, |
330 | (p_error) sock_ioerror, &tcp->sock); | 330 | (p_error) socket_ioerror, &tcp->sock); |
331 | tm_init(&tcp->tm, -1, -1); | 331 | timeout_init(&tcp->tm, -1, -1); |
332 | buf_init(&tcp->buf, &tcp->io, &tcp->tm); | 332 | buffer_init(&tcp->buf, &tcp->io, &tcp->tm); |
333 | return 1; | 333 | return 1; |
334 | } else { | 334 | } else { |
335 | lua_pushnil(L); | 335 | lua_pushnil(L); |
@@ -23,10 +23,10 @@ | |||
23 | #include "socket.h" | 23 | #include "socket.h" |
24 | 24 | ||
25 | typedef struct t_tcp_ { | 25 | typedef struct t_tcp_ { |
26 | t_sock sock; | 26 | t_socket sock; |
27 | t_io io; | 27 | t_io io; |
28 | t_buf buf; | 28 | t_buffer buf; |
29 | t_tm tm; | 29 | t_timeout tm; |
30 | } t_tcp; | 30 | } t_tcp; |
31 | 31 | ||
32 | typedef t_tcp *p_tcp; | 32 | typedef t_tcp *p_tcp; |
diff --git a/src/timeout.c b/src/timeout.c index 4f1d345..863546e 100644 --- a/src/timeout.c +++ b/src/timeout.c | |||
@@ -30,12 +30,12 @@ | |||
30 | /*=========================================================================*\ | 30 | /*=========================================================================*\ |
31 | * Internal function prototypes | 31 | * Internal function prototypes |
32 | \*=========================================================================*/ | 32 | \*=========================================================================*/ |
33 | static int tm_lua_gettime(lua_State *L); | 33 | static int timeout_lua_gettime(lua_State *L); |
34 | static int tm_lua_sleep(lua_State *L); | 34 | static int timeout_lua_sleep(lua_State *L); |
35 | 35 | ||
36 | static luaL_reg func[] = { | 36 | static luaL_reg func[] = { |
37 | { "gettime", tm_lua_gettime }, | 37 | { "gettime", timeout_lua_gettime }, |
38 | { "sleep", tm_lua_sleep }, | 38 | { "sleep", timeout_lua_sleep }, |
39 | { NULL, NULL } | 39 | { NULL, NULL } |
40 | }; | 40 | }; |
41 | 41 | ||
@@ -45,7 +45,7 @@ static luaL_reg func[] = { | |||
45 | /*-------------------------------------------------------------------------*\ | 45 | /*-------------------------------------------------------------------------*\ |
46 | * Initialize structure | 46 | * Initialize structure |
47 | \*-------------------------------------------------------------------------*/ | 47 | \*-------------------------------------------------------------------------*/ |
48 | void tm_init(p_tm tm, double block, double total) { | 48 | void timeout_init(p_timeout tm, double block, double total) { |
49 | tm->block = block; | 49 | tm->block = block; |
50 | tm->total = total; | 50 | tm->total = total; |
51 | } | 51 | } |
@@ -58,16 +58,16 @@ void tm_init(p_tm tm, double block, double total) { | |||
58 | * Returns | 58 | * Returns |
59 | * the number of ms left or -1 if there is no time limit | 59 | * the number of ms left or -1 if there is no time limit |
60 | \*-------------------------------------------------------------------------*/ | 60 | \*-------------------------------------------------------------------------*/ |
61 | double tm_get(p_tm tm) { | 61 | double timeout_get(p_timeout tm) { |
62 | if (tm->block < 0.0 && tm->total < 0.0) { | 62 | if (tm->block < 0.0 && tm->total < 0.0) { |
63 | return -1; | 63 | return -1; |
64 | } else if (tm->block < 0.0) { | 64 | } else if (tm->block < 0.0) { |
65 | double t = tm->total - tm_gettime() + tm->start; | 65 | double t = tm->total - timeout_gettime() + tm->start; |
66 | return MAX(t, 0.0); | 66 | return MAX(t, 0.0); |
67 | } else if (tm->total < 0.0) { | 67 | } else if (tm->total < 0.0) { |
68 | return tm->block; | 68 | return tm->block; |
69 | } else { | 69 | } else { |
70 | double t = tm->total - tm_gettime() + tm->start; | 70 | double t = tm->total - timeout_gettime() + tm->start; |
71 | return MIN(tm->block, MAX(t, 0.0)); | 71 | return MIN(tm->block, MAX(t, 0.0)); |
72 | } | 72 | } |
73 | } | 73 | } |
@@ -79,7 +79,7 @@ double tm_get(p_tm tm) { | |||
79 | * Returns | 79 | * Returns |
80 | * start field of structure | 80 | * start field of structure |
81 | \*-------------------------------------------------------------------------*/ | 81 | \*-------------------------------------------------------------------------*/ |
82 | double tm_getstart(p_tm tm) { | 82 | double timeout_getstart(p_timeout tm) { |
83 | return tm->start; | 83 | return tm->start; |
84 | } | 84 | } |
85 | 85 | ||
@@ -91,17 +91,17 @@ double tm_getstart(p_tm tm) { | |||
91 | * Returns | 91 | * Returns |
92 | * the number of ms left or -1 if there is no time limit | 92 | * the number of ms left or -1 if there is no time limit |
93 | \*-------------------------------------------------------------------------*/ | 93 | \*-------------------------------------------------------------------------*/ |
94 | double tm_getretry(p_tm tm) { | 94 | double timeout_getretry(p_timeout tm) { |
95 | if (tm->block < 0.0 && tm->total < 0.0) { | 95 | if (tm->block < 0.0 && tm->total < 0.0) { |
96 | return -1; | 96 | return -1; |
97 | } else if (tm->block < 0.0) { | 97 | } else if (tm->block < 0.0) { |
98 | double t = tm->total - tm_gettime() + tm->start; | 98 | double t = tm->total - timeout_gettime() + tm->start; |
99 | return MAX(t, 0.0); | 99 | return MAX(t, 0.0); |
100 | } else if (tm->total < 0.0) { | 100 | } else if (tm->total < 0.0) { |
101 | double t = tm->block - tm_gettime() + tm->start; | 101 | double t = tm->block - timeout_gettime() + tm->start; |
102 | return MAX(t, 0.0); | 102 | return MAX(t, 0.0); |
103 | } else { | 103 | } else { |
104 | double t = tm->total - tm_gettime() + tm->start; | 104 | double t = tm->total - timeout_gettime() + tm->start; |
105 | return MIN(tm->block, MAX(t, 0.0)); | 105 | return MIN(tm->block, MAX(t, 0.0)); |
106 | } | 106 | } |
107 | } | 107 | } |
@@ -111,8 +111,8 @@ double tm_getretry(p_tm tm) { | |||
111 | * Input | 111 | * Input |
112 | * tm: timeout control structure | 112 | * tm: timeout control structure |
113 | \*-------------------------------------------------------------------------*/ | 113 | \*-------------------------------------------------------------------------*/ |
114 | p_tm tm_markstart(p_tm tm) { | 114 | p_timeout timeout_markstart(p_timeout tm) { |
115 | tm->start = tm_gettime(); | 115 | tm->start = timeout_gettime(); |
116 | return tm; | 116 | return tm; |
117 | } | 117 | } |
118 | 118 | ||
@@ -122,7 +122,7 @@ p_tm tm_markstart(p_tm tm) { | |||
122 | * time in s. | 122 | * time in s. |
123 | \*-------------------------------------------------------------------------*/ | 123 | \*-------------------------------------------------------------------------*/ |
124 | #ifdef _WIN32 | 124 | #ifdef _WIN32 |
125 | double tm_gettime(void) { | 125 | double timeout_gettime(void) { |
126 | FILETIME ft; | 126 | FILETIME ft; |
127 | double t; | 127 | double t; |
128 | GetSystemTimeAsFileTime(&ft); | 128 | GetSystemTimeAsFileTime(&ft); |
@@ -132,7 +132,7 @@ double tm_gettime(void) { | |||
132 | return (t - 11644473600.0); | 132 | return (t - 11644473600.0); |
133 | } | 133 | } |
134 | #else | 134 | #else |
135 | double tm_gettime(void) { | 135 | double timeout_gettime(void) { |
136 | struct timeval v; | 136 | struct timeval v; |
137 | gettimeofday(&v, (struct timezone *) NULL); | 137 | gettimeofday(&v, (struct timezone *) NULL); |
138 | /* Unix Epoch time (time since January 1, 1970 (UTC)) */ | 138 | /* Unix Epoch time (time since January 1, 1970 (UTC)) */ |
@@ -143,7 +143,7 @@ double tm_gettime(void) { | |||
143 | /*-------------------------------------------------------------------------*\ | 143 | /*-------------------------------------------------------------------------*\ |
144 | * Initializes module | 144 | * Initializes module |
145 | \*-------------------------------------------------------------------------*/ | 145 | \*-------------------------------------------------------------------------*/ |
146 | int tm_open(lua_State *L) { | 146 | int timeout_open(lua_State *L) { |
147 | luaL_openlib(L, NULL, func, 0); | 147 | luaL_openlib(L, NULL, func, 0); |
148 | return 0; | 148 | return 0; |
149 | } | 149 | } |
@@ -154,7 +154,7 @@ int tm_open(lua_State *L) { | |||
154 | * time: time out value in seconds | 154 | * time: time out value in seconds |
155 | * mode: "b" for block timeout, "t" for total timeout. (default: b) | 155 | * mode: "b" for block timeout, "t" for total timeout. (default: b) |
156 | \*-------------------------------------------------------------------------*/ | 156 | \*-------------------------------------------------------------------------*/ |
157 | int tm_meth_settimeout(lua_State *L, p_tm tm) { | 157 | int timeout_meth_settimeout(lua_State *L, p_timeout tm) { |
158 | double t = luaL_optnumber(L, 2, -1); | 158 | double t = luaL_optnumber(L, 2, -1); |
159 | const char *mode = luaL_optstring(L, 3, "b"); | 159 | const char *mode = luaL_optstring(L, 3, "b"); |
160 | switch (*mode) { | 160 | switch (*mode) { |
@@ -178,16 +178,16 @@ int tm_meth_settimeout(lua_State *L, p_tm tm) { | |||
178 | /*-------------------------------------------------------------------------*\ | 178 | /*-------------------------------------------------------------------------*\ |
179 | * Returns the time the system has been up, in secconds. | 179 | * Returns the time the system has been up, in secconds. |
180 | \*-------------------------------------------------------------------------*/ | 180 | \*-------------------------------------------------------------------------*/ |
181 | static int tm_lua_gettime(lua_State *L) | 181 | static int timeout_lua_gettime(lua_State *L) |
182 | { | 182 | { |
183 | lua_pushnumber(L, tm_gettime()); | 183 | lua_pushnumber(L, timeout_gettime()); |
184 | return 1; | 184 | return 1; |
185 | } | 185 | } |
186 | 186 | ||
187 | /*-------------------------------------------------------------------------*\ | 187 | /*-------------------------------------------------------------------------*\ |
188 | * Sleep for n seconds. | 188 | * Sleep for n seconds. |
189 | \*-------------------------------------------------------------------------*/ | 189 | \*-------------------------------------------------------------------------*/ |
190 | int tm_lua_sleep(lua_State *L) | 190 | int timeout_lua_sleep(lua_State *L) |
191 | { | 191 | { |
192 | double n = luaL_checknumber(L, 1); | 192 | double n = luaL_checknumber(L, 1); |
193 | #ifdef _WIN32 | 193 | #ifdef _WIN32 |
diff --git a/src/timeout.h b/src/timeout.h index 27e0a8a..a328bcc 100644 --- a/src/timeout.h +++ b/src/timeout.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef TM_H | 1 | #ifndef TIMEOUT_H |
2 | #define TM_H | 2 | #define TIMEOUT_H |
3 | /*=========================================================================*\ | 3 | /*=========================================================================*\ |
4 | * Timeout management functions | 4 | * Timeout management functions |
5 | * LuaSocket toolkit | 5 | * LuaSocket toolkit |
@@ -9,22 +9,22 @@ | |||
9 | #include "lua.h" | 9 | #include "lua.h" |
10 | 10 | ||
11 | /* timeout control structure */ | 11 | /* timeout control structure */ |
12 | typedef struct t_tm_ { | 12 | typedef struct t_timeout_ { |
13 | double block; /* maximum time for blocking calls */ | 13 | double block; /* maximum time for blocking calls */ |
14 | double total; /* total number of miliseconds for operation */ | 14 | double total; /* total number of miliseconds for operation */ |
15 | double start; /* time of start of operation */ | 15 | double start; /* time of start of operation */ |
16 | } t_tm; | 16 | } t_timeout; |
17 | typedef t_tm *p_tm; | 17 | typedef t_timeout *p_timeout; |
18 | 18 | ||
19 | int tm_open(lua_State *L); | 19 | int timeout_open(lua_State *L); |
20 | void tm_init(p_tm tm, double block, double total); | 20 | void timeout_init(p_timeout tm, double block, double total); |
21 | double tm_get(p_tm tm); | 21 | double timeout_get(p_timeout tm); |
22 | double tm_getretry(p_tm tm); | 22 | double timeout_getretry(p_timeout tm); |
23 | p_tm tm_markstart(p_tm tm); | 23 | p_timeout timeout_markstart(p_timeout tm); |
24 | double tm_getstart(p_tm tm); | 24 | double timeout_getstart(p_timeout tm); |
25 | double tm_gettime(void); | 25 | double timeout_gettime(void); |
26 | int tm_meth_settimeout(lua_State *L, p_tm tm); | 26 | int timeout_meth_settimeout(lua_State *L, p_timeout tm); |
27 | 27 | ||
28 | #define tm_iszero(tm) ((tm)->block == 0.0) | 28 | #define timeout_iszero(tm) ((tm)->block == 0.0) |
29 | 29 | ||
30 | #endif /* TM_H */ | 30 | #endif /* TIMEOUT_H */ |
@@ -45,7 +45,7 @@ static int meth_dirty(lua_State *L); | |||
45 | /* udp object methods */ | 45 | /* udp object methods */ |
46 | static luaL_reg udp[] = { | 46 | static luaL_reg udp[] = { |
47 | {"__gc", meth_close}, | 47 | {"__gc", meth_close}, |
48 | {"__tostring", aux_tostring}, | 48 | {"__tostring", auxiliar_tostring}, |
49 | {"close", meth_close}, | 49 | {"close", meth_close}, |
50 | {"dirty", meth_dirty}, | 50 | {"dirty", meth_dirty}, |
51 | {"getfd", meth_getfd}, | 51 | {"getfd", meth_getfd}, |
@@ -87,13 +87,13 @@ static luaL_reg func[] = { | |||
87 | int udp_open(lua_State *L) | 87 | int udp_open(lua_State *L) |
88 | { | 88 | { |
89 | /* create classes */ | 89 | /* create classes */ |
90 | aux_newclass(L, "udp{connected}", udp); | 90 | auxiliar_newclass(L, "udp{connected}", udp); |
91 | aux_newclass(L, "udp{unconnected}", udp); | 91 | auxiliar_newclass(L, "udp{unconnected}", udp); |
92 | /* create class groups */ | 92 | /* create class groups */ |
93 | aux_add2group(L, "udp{connected}", "udp{any}"); | 93 | auxiliar_add2group(L, "udp{connected}", "udp{any}"); |
94 | aux_add2group(L, "udp{unconnected}", "udp{any}"); | 94 | auxiliar_add2group(L, "udp{unconnected}", "udp{any}"); |
95 | aux_add2group(L, "udp{connected}", "select{able}"); | 95 | auxiliar_add2group(L, "udp{connected}", "select{able}"); |
96 | aux_add2group(L, "udp{unconnected}", "select{able}"); | 96 | auxiliar_add2group(L, "udp{unconnected}", "select{able}"); |
97 | /* define library functions */ | 97 | /* define library functions */ |
98 | luaL_openlib(L, NULL, func, 0); | 98 | luaL_openlib(L, NULL, func, 0); |
99 | return 0; | 99 | return 0; |
@@ -106,20 +106,20 @@ const char *udp_strerror(int err) { | |||
106 | /* a 'closed' error on an unconnected means the target address was not | 106 | /* a 'closed' error on an unconnected means the target address was not |
107 | * accepted by the transport layer */ | 107 | * accepted by the transport layer */ |
108 | if (err == IO_CLOSED) return "refused"; | 108 | if (err == IO_CLOSED) return "refused"; |
109 | else return sock_strerror(err); | 109 | else return socket_strerror(err); |
110 | } | 110 | } |
111 | 111 | ||
112 | /*-------------------------------------------------------------------------*\ | 112 | /*-------------------------------------------------------------------------*\ |
113 | * Send data through connected udp socket | 113 | * Send data through connected udp socket |
114 | \*-------------------------------------------------------------------------*/ | 114 | \*-------------------------------------------------------------------------*/ |
115 | static int meth_send(lua_State *L) { | 115 | static int meth_send(lua_State *L) { |
116 | p_udp udp = (p_udp) aux_checkclass(L, "udp{connected}", 1); | 116 | p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1); |
117 | p_tm tm = &udp->tm; | 117 | p_timeout tm = &udp->tm; |
118 | size_t count, sent = 0; | 118 | size_t count, sent = 0; |
119 | int err; | 119 | int err; |
120 | const char *data = luaL_checklstring(L, 2, &count); | 120 | const char *data = luaL_checklstring(L, 2, &count); |
121 | tm_markstart(tm); | 121 | timeout_markstart(tm); |
122 | err = sock_send(&udp->sock, data, count, &sent, tm); | 122 | err = socket_send(&udp->sock, data, count, &sent, tm); |
123 | if (err != IO_DONE) { | 123 | if (err != IO_DONE) { |
124 | lua_pushnil(L); | 124 | lua_pushnil(L); |
125 | lua_pushstring(L, udp_strerror(err)); | 125 | lua_pushstring(L, udp_strerror(err)); |
@@ -133,12 +133,12 @@ static int meth_send(lua_State *L) { | |||
133 | * Send data through unconnected udp socket | 133 | * Send data through unconnected udp socket |
134 | \*-------------------------------------------------------------------------*/ | 134 | \*-------------------------------------------------------------------------*/ |
135 | static int meth_sendto(lua_State *L) { | 135 | static int meth_sendto(lua_State *L) { |
136 | p_udp udp = (p_udp) aux_checkclass(L, "udp{unconnected}", 1); | 136 | p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); |
137 | size_t count, sent = 0; | 137 | size_t count, sent = 0; |
138 | const char *data = luaL_checklstring(L, 2, &count); | 138 | const char *data = luaL_checklstring(L, 2, &count); |
139 | const char *ip = luaL_checkstring(L, 3); | 139 | const char *ip = luaL_checkstring(L, 3); |
140 | unsigned short port = (unsigned short) luaL_checknumber(L, 4); | 140 | unsigned short port = (unsigned short) luaL_checknumber(L, 4); |
141 | p_tm tm = &udp->tm; | 141 | p_timeout tm = &udp->tm; |
142 | struct sockaddr_in addr; | 142 | struct sockaddr_in addr; |
143 | int err; | 143 | int err; |
144 | memset(&addr, 0, sizeof(addr)); | 144 | memset(&addr, 0, sizeof(addr)); |
@@ -146,8 +146,8 @@ static int meth_sendto(lua_State *L) { | |||
146 | luaL_argerror(L, 3, "invalid ip address"); | 146 | luaL_argerror(L, 3, "invalid ip address"); |
147 | addr.sin_family = AF_INET; | 147 | addr.sin_family = AF_INET; |
148 | addr.sin_port = htons(port); | 148 | addr.sin_port = htons(port); |
149 | tm_markstart(tm); | 149 | timeout_markstart(tm); |
150 | err = sock_sendto(&udp->sock, data, count, &sent, | 150 | err = socket_sendto(&udp->sock, data, count, &sent, |
151 | (SA *) &addr, sizeof(addr), tm); | 151 | (SA *) &addr, sizeof(addr), tm); |
152 | if (err != IO_DONE) { | 152 | if (err != IO_DONE) { |
153 | lua_pushnil(L); | 153 | lua_pushnil(L); |
@@ -162,14 +162,14 @@ static int meth_sendto(lua_State *L) { | |||
162 | * Receives data from a UDP socket | 162 | * Receives data from a UDP socket |
163 | \*-------------------------------------------------------------------------*/ | 163 | \*-------------------------------------------------------------------------*/ |
164 | static int meth_receive(lua_State *L) { | 164 | static int meth_receive(lua_State *L) { |
165 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 165 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
166 | char buffer[UDP_DATAGRAMSIZE]; | 166 | char buffer[UDP_DATAGRAMSIZE]; |
167 | size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); | 167 | size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); |
168 | int err; | 168 | int err; |
169 | p_tm tm = &udp->tm; | 169 | p_timeout tm = &udp->tm; |
170 | count = MIN(count, sizeof(buffer)); | 170 | count = MIN(count, sizeof(buffer)); |
171 | tm_markstart(tm); | 171 | timeout_markstart(tm); |
172 | err = sock_recv(&udp->sock, buffer, count, &got, tm); | 172 | err = socket_recv(&udp->sock, buffer, count, &got, tm); |
173 | if (err != IO_DONE) { | 173 | if (err != IO_DONE) { |
174 | lua_pushnil(L); | 174 | lua_pushnil(L); |
175 | lua_pushstring(L, udp_strerror(err)); | 175 | lua_pushstring(L, udp_strerror(err)); |
@@ -183,16 +183,16 @@ static int meth_receive(lua_State *L) { | |||
183 | * Receives data and sender from a UDP socket | 183 | * Receives data and sender from a UDP socket |
184 | \*-------------------------------------------------------------------------*/ | 184 | \*-------------------------------------------------------------------------*/ |
185 | static int meth_receivefrom(lua_State *L) { | 185 | static int meth_receivefrom(lua_State *L) { |
186 | p_udp udp = (p_udp) aux_checkclass(L, "udp{unconnected}", 1); | 186 | p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); |
187 | struct sockaddr_in addr; | 187 | struct sockaddr_in addr; |
188 | socklen_t addr_len = sizeof(addr); | 188 | socklen_t addr_len = sizeof(addr); |
189 | char buffer[UDP_DATAGRAMSIZE]; | 189 | char buffer[UDP_DATAGRAMSIZE]; |
190 | size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); | 190 | size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); |
191 | int err; | 191 | int err; |
192 | p_tm tm = &udp->tm; | 192 | p_timeout tm = &udp->tm; |
193 | tm_markstart(tm); | 193 | timeout_markstart(tm); |
194 | count = MIN(count, sizeof(buffer)); | 194 | count = MIN(count, sizeof(buffer)); |
195 | err = sock_recvfrom(&udp->sock, buffer, count, &got, | 195 | err = socket_recvfrom(&udp->sock, buffer, count, &got, |
196 | (SA *) &addr, &addr_len, tm); | 196 | (SA *) &addr, &addr_len, tm); |
197 | if (err == IO_DONE) { | 197 | if (err == IO_DONE) { |
198 | lua_pushlstring(L, buffer, got); | 198 | lua_pushlstring(L, buffer, got); |
@@ -210,20 +210,20 @@ static int meth_receivefrom(lua_State *L) { | |||
210 | * Select support methods | 210 | * Select support methods |
211 | \*-------------------------------------------------------------------------*/ | 211 | \*-------------------------------------------------------------------------*/ |
212 | static int meth_getfd(lua_State *L) { | 212 | static int meth_getfd(lua_State *L) { |
213 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 213 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
214 | lua_pushnumber(L, (int) udp->sock); | 214 | lua_pushnumber(L, (int) udp->sock); |
215 | return 1; | 215 | return 1; |
216 | } | 216 | } |
217 | 217 | ||
218 | /* this is very dangerous, but can be handy for those that are brave enough */ | 218 | /* this is very dangerous, but can be handy for those that are brave enough */ |
219 | static int meth_setfd(lua_State *L) { | 219 | static int meth_setfd(lua_State *L) { |
220 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 220 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
221 | udp->sock = (t_sock) luaL_checknumber(L, 2); | 221 | udp->sock = (t_socket) luaL_checknumber(L, 2); |
222 | return 0; | 222 | return 0; |
223 | } | 223 | } |
224 | 224 | ||
225 | static int meth_dirty(lua_State *L) { | 225 | static int meth_dirty(lua_State *L) { |
226 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 226 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
227 | (void) udp; | 227 | (void) udp; |
228 | lua_pushboolean(L, 0); | 228 | lua_pushboolean(L, 0); |
229 | return 1; | 229 | return 1; |
@@ -233,12 +233,12 @@ static int meth_dirty(lua_State *L) { | |||
233 | * Just call inet methods | 233 | * Just call inet methods |
234 | \*-------------------------------------------------------------------------*/ | 234 | \*-------------------------------------------------------------------------*/ |
235 | static int meth_getpeername(lua_State *L) { | 235 | static int meth_getpeername(lua_State *L) { |
236 | p_udp udp = (p_udp) aux_checkclass(L, "udp{connected}", 1); | 236 | p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1); |
237 | return inet_meth_getpeername(L, &udp->sock); | 237 | return inet_meth_getpeername(L, &udp->sock); |
238 | } | 238 | } |
239 | 239 | ||
240 | static int meth_getsockname(lua_State *L) { | 240 | static int meth_getsockname(lua_State *L) { |
241 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 241 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
242 | return inet_meth_getsockname(L, &udp->sock); | 242 | return inet_meth_getsockname(L, &udp->sock); |
243 | } | 243 | } |
244 | 244 | ||
@@ -246,7 +246,7 @@ static int meth_getsockname(lua_State *L) { | |||
246 | * Just call option handler | 246 | * Just call option handler |
247 | \*-------------------------------------------------------------------------*/ | 247 | \*-------------------------------------------------------------------------*/ |
248 | static int meth_setoption(lua_State *L) { | 248 | static int meth_setoption(lua_State *L) { |
249 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 249 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
250 | return opt_meth_setoption(L, opt, &udp->sock); | 250 | return opt_meth_setoption(L, opt, &udp->sock); |
251 | } | 251 | } |
252 | 252 | ||
@@ -254,16 +254,16 @@ static int meth_setoption(lua_State *L) { | |||
254 | * Just call tm methods | 254 | * Just call tm methods |
255 | \*-------------------------------------------------------------------------*/ | 255 | \*-------------------------------------------------------------------------*/ |
256 | static int meth_settimeout(lua_State *L) { | 256 | static int meth_settimeout(lua_State *L) { |
257 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 257 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
258 | return tm_meth_settimeout(L, &udp->tm); | 258 | return timeout_meth_settimeout(L, &udp->tm); |
259 | } | 259 | } |
260 | 260 | ||
261 | /*-------------------------------------------------------------------------*\ | 261 | /*-------------------------------------------------------------------------*\ |
262 | * Turns a master udp object into a client object. | 262 | * Turns a master udp object into a client object. |
263 | \*-------------------------------------------------------------------------*/ | 263 | \*-------------------------------------------------------------------------*/ |
264 | static int meth_setpeername(lua_State *L) { | 264 | static int meth_setpeername(lua_State *L) { |
265 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 265 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
266 | p_tm tm = &udp->tm; | 266 | p_timeout tm = &udp->tm; |
267 | const char *address = luaL_checkstring(L, 2); | 267 | const char *address = luaL_checkstring(L, 2); |
268 | int connecting = strcmp(address, "*"); | 268 | int connecting = strcmp(address, "*"); |
269 | unsigned short port = connecting ? | 269 | unsigned short port = connecting ? |
@@ -276,8 +276,8 @@ static int meth_setpeername(lua_State *L) { | |||
276 | return 2; | 276 | return 2; |
277 | } | 277 | } |
278 | /* change class to connected or unconnected depending on address */ | 278 | /* change class to connected or unconnected depending on address */ |
279 | if (connecting) aux_setclass(L, "udp{connected}", 1); | 279 | if (connecting) auxiliar_setclass(L, "udp{connected}", 1); |
280 | else aux_setclass(L, "udp{unconnected}", 1); | 280 | else auxiliar_setclass(L, "udp{unconnected}", 1); |
281 | lua_pushnumber(L, 1); | 281 | lua_pushnumber(L, 1); |
282 | return 1; | 282 | return 1; |
283 | } | 283 | } |
@@ -286,8 +286,8 @@ static int meth_setpeername(lua_State *L) { | |||
286 | * Closes socket used by object | 286 | * Closes socket used by object |
287 | \*-------------------------------------------------------------------------*/ | 287 | \*-------------------------------------------------------------------------*/ |
288 | static int meth_close(lua_State *L) { | 288 | static int meth_close(lua_State *L) { |
289 | p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); | 289 | p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); |
290 | sock_destroy(&udp->sock); | 290 | socket_destroy(&udp->sock); |
291 | lua_pushnumber(L, 1); | 291 | lua_pushnumber(L, 1); |
292 | return 1; | 292 | return 1; |
293 | } | 293 | } |
@@ -296,7 +296,7 @@ static int meth_close(lua_State *L) { | |||
296 | * Turns a master object into a server object | 296 | * Turns a master object into a server object |
297 | \*-------------------------------------------------------------------------*/ | 297 | \*-------------------------------------------------------------------------*/ |
298 | static int meth_setsockname(lua_State *L) { | 298 | static int meth_setsockname(lua_State *L) { |
299 | p_udp udp = (p_udp) aux_checkclass(L, "udp{unconnected}", 1); | 299 | p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); |
300 | const char *address = luaL_checkstring(L, 2); | 300 | const char *address = luaL_checkstring(L, 2); |
301 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); | 301 | unsigned short port = (unsigned short) luaL_checknumber(L, 3); |
302 | const char *err = inet_trybind(&udp->sock, address, port); | 302 | const char *err = inet_trybind(&udp->sock, address, port); |
@@ -316,17 +316,17 @@ static int meth_setsockname(lua_State *L) { | |||
316 | * Creates a master udp object | 316 | * Creates a master udp object |
317 | \*-------------------------------------------------------------------------*/ | 317 | \*-------------------------------------------------------------------------*/ |
318 | static int global_create(lua_State *L) { | 318 | static int global_create(lua_State *L) { |
319 | t_sock sock; | 319 | t_socket sock; |
320 | const char *err = inet_trycreate(&sock, SOCK_DGRAM); | 320 | const char *err = inet_trycreate(&sock, SOCK_DGRAM); |
321 | /* try to allocate a system socket */ | 321 | /* try to allocate a system socket */ |
322 | if (!err) { | 322 | if (!err) { |
323 | /* allocate tcp object */ | 323 | /* allocate tcp object */ |
324 | p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp)); | 324 | p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp)); |
325 | aux_setclass(L, "udp{unconnected}", -1); | 325 | auxiliar_setclass(L, "udp{unconnected}", -1); |
326 | /* initialize remaining structure fields */ | 326 | /* initialize remaining structure fields */ |
327 | sock_setnonblocking(&sock); | 327 | socket_setnonblocking(&sock); |
328 | udp->sock = sock; | 328 | udp->sock = sock; |
329 | tm_init(&udp->tm, -1, -1); | 329 | timeout_init(&udp->tm, -1, -1); |
330 | return 1; | 330 | return 1; |
331 | } else { | 331 | } else { |
332 | lua_pushnil(L); | 332 | lua_pushnil(L); |
@@ -23,8 +23,8 @@ | |||
23 | #define UDP_DATAGRAMSIZE 8192 | 23 | #define UDP_DATAGRAMSIZE 8192 |
24 | 24 | ||
25 | typedef struct t_udp_ { | 25 | typedef struct t_udp_ { |
26 | t_sock sock; | 26 | t_socket sock; |
27 | t_tm tm; | 27 | t_timeout tm; |
28 | } t_udp; | 28 | } t_udp; |
29 | typedef t_udp *p_udp; | 29 | typedef t_udp *p_udp; |
30 | 30 | ||
diff --git a/src/usocket.c b/src/usocket.c index f067fa1..e9db6dd 100644 --- a/src/usocket.c +++ b/src/usocket.c | |||
@@ -16,21 +16,21 @@ | |||
16 | /*-------------------------------------------------------------------------*\ | 16 | /*-------------------------------------------------------------------------*\ |
17 | * Wait for readable/writable/connected socket with timeout | 17 | * Wait for readable/writable/connected socket with timeout |
18 | \*-------------------------------------------------------------------------*/ | 18 | \*-------------------------------------------------------------------------*/ |
19 | #ifdef SOCK_POLL | 19 | #ifdef SOCKET_POLL |
20 | #include <sys/poll.h> | 20 | #include <sys/poll.h> |
21 | 21 | ||
22 | #define WAITFD_R POLLIN | 22 | #define WAITFD_R POLLIN |
23 | #define WAITFD_W POLLOUT | 23 | #define WAITFD_W POLLOUT |
24 | #define WAITFD_C (POLLIN|POLLOUT) | 24 | #define WAITFD_C (POLLIN|POLLOUT) |
25 | int sock_waitfd(p_sock ps, int sw, p_tm tm) { | 25 | int socket_waitfd(p_socket ps, int sw, p_timeout tm) { |
26 | int ret; | 26 | int ret; |
27 | struct pollfd pfd; | 27 | struct pollfd pfd; |
28 | pfd.fd = *ps; | 28 | pfd.fd = *ps; |
29 | pfd.events = sw; | 29 | pfd.events = sw; |
30 | pfd.revents = 0; | 30 | pfd.revents = 0; |
31 | if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ | 31 | if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ |
32 | do { | 32 | do { |
33 | int t = (int)(tm_getretry(tm)*1e3); | 33 | int t = (int)(timeout_getretry(tm)*1e3); |
34 | ret = poll(&pfd, 1, t >= 0? t: -1); | 34 | ret = poll(&pfd, 1, t >= 0? t: -1); |
35 | } while (ret == -1 && errno == EINTR); | 35 | } while (ret == -1 && errno == EINTR); |
36 | if (ret == -1) return errno; | 36 | if (ret == -1) return errno; |
@@ -44,18 +44,18 @@ int sock_waitfd(p_sock ps, int sw, p_tm tm) { | |||
44 | #define WAITFD_W 2 | 44 | #define WAITFD_W 2 |
45 | #define WAITFD_C (WAITFD_R|WAITFD_W) | 45 | #define WAITFD_C (WAITFD_R|WAITFD_W) |
46 | 46 | ||
47 | int sock_waitfd(p_sock ps, int sw, p_tm tm) { | 47 | int socket_waitfd(p_socket ps, int sw, p_timeout tm) { |
48 | int ret; | 48 | int ret; |
49 | fd_set rfds, wfds, *rp, *wp; | 49 | fd_set rfds, wfds, *rp, *wp; |
50 | struct timeval tv, *tp; | 50 | struct timeval tv, *tp; |
51 | double t; | 51 | double t; |
52 | if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ | 52 | if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ |
53 | do { | 53 | do { |
54 | /* must set bits within loop, because select may have modifed them */ | 54 | /* must set bits within loop, because select may have modifed them */ |
55 | rp = wp = NULL; | 55 | rp = wp = NULL; |
56 | if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; } | 56 | if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; } |
57 | if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } | 57 | if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } |
58 | t = tm_getretry(tm); | 58 | t = timeout_getretry(tm); |
59 | tp = NULL; | 59 | tp = NULL; |
60 | if (t >= 0.0) { | 60 | if (t >= 0.0) { |
61 | tv.tv_sec = (int)t; | 61 | tv.tv_sec = (int)t; |
@@ -75,7 +75,7 @@ int sock_waitfd(p_sock ps, int sw, p_tm tm) { | |||
75 | /*-------------------------------------------------------------------------*\ | 75 | /*-------------------------------------------------------------------------*\ |
76 | * Initializes module | 76 | * Initializes module |
77 | \*-------------------------------------------------------------------------*/ | 77 | \*-------------------------------------------------------------------------*/ |
78 | int sock_open(void) { | 78 | int socket_open(void) { |
79 | /* instals a handler to ignore sigpipe or it will crash us */ | 79 | /* instals a handler to ignore sigpipe or it will crash us */ |
80 | signal(SIGPIPE, SIG_IGN); | 80 | signal(SIGPIPE, SIG_IGN); |
81 | return 1; | 81 | return 1; |
@@ -84,29 +84,29 @@ int sock_open(void) { | |||
84 | /*-------------------------------------------------------------------------*\ | 84 | /*-------------------------------------------------------------------------*\ |
85 | * Close module | 85 | * Close module |
86 | \*-------------------------------------------------------------------------*/ | 86 | \*-------------------------------------------------------------------------*/ |
87 | int sock_close(void) { | 87 | int socket_close(void) { |
88 | return 1; | 88 | return 1; |
89 | } | 89 | } |
90 | 90 | ||
91 | /*-------------------------------------------------------------------------*\ | 91 | /*-------------------------------------------------------------------------*\ |
92 | * Close and inutilize socket | 92 | * Close and inutilize socket |
93 | \*-------------------------------------------------------------------------*/ | 93 | \*-------------------------------------------------------------------------*/ |
94 | void sock_destroy(p_sock ps) { | 94 | void socket_destroy(p_socket ps) { |
95 | if (*ps != SOCK_INVALID) { | 95 | if (*ps != SOCKET_INVALID) { |
96 | sock_setblocking(ps); | 96 | socket_setblocking(ps); |
97 | close(*ps); | 97 | close(*ps); |
98 | *ps = SOCK_INVALID; | 98 | *ps = SOCKET_INVALID; |
99 | } | 99 | } |
100 | } | 100 | } |
101 | 101 | ||
102 | /*-------------------------------------------------------------------------*\ | 102 | /*-------------------------------------------------------------------------*\ |
103 | * Select with timeout control | 103 | * Select with timeout control |
104 | \*-------------------------------------------------------------------------*/ | 104 | \*-------------------------------------------------------------------------*/ |
105 | int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { | 105 | int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm) { |
106 | int ret; | 106 | int ret; |
107 | do { | 107 | do { |
108 | struct timeval tv; | 108 | struct timeval tv; |
109 | double t = tm_getretry(tm); | 109 | double t = timeout_getretry(tm); |
110 | tv.tv_sec = (int) t; | 110 | tv.tv_sec = (int) t; |
111 | tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6); | 111 | tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6); |
112 | ret = select(n, rfds, wfds, efds, t >= 0.0? &tv: NULL); | 112 | ret = select(n, rfds, wfds, efds, t >= 0.0? &tv: NULL); |
@@ -117,59 +117,59 @@ int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { | |||
117 | /*-------------------------------------------------------------------------*\ | 117 | /*-------------------------------------------------------------------------*\ |
118 | * Creates and sets up a socket | 118 | * Creates and sets up a socket |
119 | \*-------------------------------------------------------------------------*/ | 119 | \*-------------------------------------------------------------------------*/ |
120 | int sock_create(p_sock ps, int domain, int type, int protocol) { | 120 | int socket_create(p_socket ps, int domain, int type, int protocol) { |
121 | *ps = socket(domain, type, protocol); | 121 | *ps = socket(domain, type, protocol); |
122 | if (*ps != SOCK_INVALID) return IO_DONE; | 122 | if (*ps != SOCKET_INVALID) return IO_DONE; |
123 | else return errno; | 123 | else return errno; |
124 | } | 124 | } |
125 | 125 | ||
126 | /*-------------------------------------------------------------------------*\ | 126 | /*-------------------------------------------------------------------------*\ |
127 | * Binds or returns error message | 127 | * Binds or returns error message |
128 | \*-------------------------------------------------------------------------*/ | 128 | \*-------------------------------------------------------------------------*/ |
129 | int sock_bind(p_sock ps, SA *addr, socklen_t len) { | 129 | int socket_bind(p_socket ps, SA *addr, socklen_t len) { |
130 | int err = IO_DONE; | 130 | int err = IO_DONE; |
131 | sock_setblocking(ps); | 131 | socket_setblocking(ps); |
132 | if (bind(*ps, addr, len) < 0) err = errno; | 132 | if (bind(*ps, addr, len) < 0) err = errno; |
133 | sock_setnonblocking(ps); | 133 | socket_setnonblocking(ps); |
134 | return err; | 134 | return err; |
135 | } | 135 | } |
136 | 136 | ||
137 | /*-------------------------------------------------------------------------*\ | 137 | /*-------------------------------------------------------------------------*\ |
138 | * | 138 | * |
139 | \*-------------------------------------------------------------------------*/ | 139 | \*-------------------------------------------------------------------------*/ |
140 | int sock_listen(p_sock ps, int backlog) { | 140 | int socket_listen(p_socket ps, int backlog) { |
141 | int err = IO_DONE; | 141 | int err = IO_DONE; |
142 | sock_setblocking(ps); | 142 | socket_setblocking(ps); |
143 | if (listen(*ps, backlog)) err = errno; | 143 | if (listen(*ps, backlog)) err = errno; |
144 | sock_setnonblocking(ps); | 144 | socket_setnonblocking(ps); |
145 | return err; | 145 | return err; |
146 | } | 146 | } |
147 | 147 | ||
148 | /*-------------------------------------------------------------------------*\ | 148 | /*-------------------------------------------------------------------------*\ |
149 | * | 149 | * |
150 | \*-------------------------------------------------------------------------*/ | 150 | \*-------------------------------------------------------------------------*/ |
151 | void sock_shutdown(p_sock ps, int how) { | 151 | void socket_shutdown(p_socket ps, int how) { |
152 | sock_setblocking(ps); | 152 | socket_setblocking(ps); |
153 | shutdown(*ps, how); | 153 | shutdown(*ps, how); |
154 | sock_setnonblocking(ps); | 154 | socket_setnonblocking(ps); |
155 | } | 155 | } |
156 | 156 | ||
157 | /*-------------------------------------------------------------------------*\ | 157 | /*-------------------------------------------------------------------------*\ |
158 | * Connects or returns error message | 158 | * Connects or returns error message |
159 | \*-------------------------------------------------------------------------*/ | 159 | \*-------------------------------------------------------------------------*/ |
160 | int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { | 160 | int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) { |
161 | int err; | 161 | int err; |
162 | /* avoid calling on closed sockets */ | 162 | /* avoid calling on closed sockets */ |
163 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 163 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
164 | /* call connect until done or failed without being interrupted */ | 164 | /* call connect until done or failed without being interrupted */ |
165 | do if (connect(*ps, addr, len) == 0) return IO_DONE; | 165 | do if (connect(*ps, addr, len) == 0) return IO_DONE; |
166 | while ((err = errno) == EINTR); | 166 | while ((err = errno) == EINTR); |
167 | /* if connection failed immediately, return error code */ | 167 | /* if connection failed immediately, return error code */ |
168 | if (err != EINPROGRESS && err != EAGAIN) return err; | 168 | if (err != EINPROGRESS && err != EAGAIN) return err; |
169 | /* zero timeout case optimization */ | 169 | /* zero timeout case optimization */ |
170 | if (tm_iszero(tm)) return IO_TIMEOUT; | 170 | if (timeout_iszero(tm)) return IO_TIMEOUT; |
171 | /* wait until we have the result of the connection attempt or timeout */ | 171 | /* wait until we have the result of the connection attempt or timeout */ |
172 | err = sock_waitfd(ps, WAITFD_C, tm); | 172 | err = socket_waitfd(ps, WAITFD_C, tm); |
173 | if (err == IO_CLOSED) { | 173 | if (err == IO_CLOSED) { |
174 | if (recv(*ps, (char *) &err, 0, 0) == 0) return IO_DONE; | 174 | if (recv(*ps, (char *) &err, 0, 0) == 0) return IO_DONE; |
175 | else return errno; | 175 | else return errno; |
@@ -179,19 +179,19 @@ int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { | |||
179 | /*-------------------------------------------------------------------------*\ | 179 | /*-------------------------------------------------------------------------*\ |
180 | * Accept with timeout | 180 | * Accept with timeout |
181 | \*-------------------------------------------------------------------------*/ | 181 | \*-------------------------------------------------------------------------*/ |
182 | int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) { | 182 | int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) { |
183 | SA daddr; | 183 | SA daddr; |
184 | socklen_t dlen = sizeof(daddr); | 184 | socklen_t dlen = sizeof(daddr); |
185 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 185 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
186 | if (!addr) addr = &daddr; | 186 | if (!addr) addr = &daddr; |
187 | if (!len) len = &dlen; | 187 | if (!len) len = &dlen; |
188 | for ( ;; ) { | 188 | for ( ;; ) { |
189 | int err; | 189 | int err; |
190 | if ((*pa = accept(*ps, addr, len)) != SOCK_INVALID) return IO_DONE; | 190 | if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE; |
191 | err = errno; | 191 | err = errno; |
192 | if (err == EINTR) continue; | 192 | if (err == EINTR) continue; |
193 | if (err != EAGAIN && err != ECONNABORTED) return err; | 193 | if (err != EAGAIN && err != ECONNABORTED) return err; |
194 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 194 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
195 | } | 195 | } |
196 | /* can't reach here */ | 196 | /* can't reach here */ |
197 | return IO_UNKNOWN; | 197 | return IO_UNKNOWN; |
@@ -200,11 +200,12 @@ int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) { | |||
200 | /*-------------------------------------------------------------------------*\ | 200 | /*-------------------------------------------------------------------------*\ |
201 | * Send with timeout | 201 | * Send with timeout |
202 | \*-------------------------------------------------------------------------*/ | 202 | \*-------------------------------------------------------------------------*/ |
203 | int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | 203 | int socket_send(p_socket ps, const char *data, size_t count, |
204 | size_t *sent, p_timeout tm) | ||
204 | { | 205 | { |
205 | int err; | 206 | int err; |
206 | /* avoid making system calls on closed sockets */ | 207 | /* avoid making system calls on closed sockets */ |
207 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 208 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
208 | /* loop until we send something or we give up on error */ | 209 | /* loop until we send something or we give up on error */ |
209 | *sent = 0; | 210 | *sent = 0; |
210 | for ( ;; ) { | 211 | for ( ;; ) { |
@@ -223,7 +224,7 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | |||
223 | /* if failed fatal reason, report error */ | 224 | /* if failed fatal reason, report error */ |
224 | if (err != EAGAIN) return err; | 225 | if (err != EAGAIN) return err; |
225 | /* wait until we can send something or we timeout */ | 226 | /* wait until we can send something or we timeout */ |
226 | if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; | 227 | if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; |
227 | } | 228 | } |
228 | /* can't reach here */ | 229 | /* can't reach here */ |
229 | return IO_UNKNOWN; | 230 | return IO_UNKNOWN; |
@@ -232,11 +233,11 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | |||
232 | /*-------------------------------------------------------------------------*\ | 233 | /*-------------------------------------------------------------------------*\ |
233 | * Sendto with timeout | 234 | * Sendto with timeout |
234 | \*-------------------------------------------------------------------------*/ | 235 | \*-------------------------------------------------------------------------*/ |
235 | int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | 236 | int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, |
236 | SA *addr, socklen_t len, p_tm tm) | 237 | SA *addr, socklen_t len, p_timeout tm) |
237 | { | 238 | { |
238 | int err; | 239 | int err; |
239 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 240 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
240 | *sent = 0; | 241 | *sent = 0; |
241 | for ( ;; ) { | 242 | for ( ;; ) { |
242 | long put = (long) sendto(*ps, data, count, 0, addr, len); | 243 | long put = (long) sendto(*ps, data, count, 0, addr, len); |
@@ -248,7 +249,7 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
248 | if (put == 0 || err == EPIPE) return IO_CLOSED; | 249 | if (put == 0 || err == EPIPE) return IO_CLOSED; |
249 | if (err == EINTR) continue; | 250 | if (err == EINTR) continue; |
250 | if (err != EAGAIN) return err; | 251 | if (err != EAGAIN) return err; |
251 | if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; | 252 | if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; |
252 | } | 253 | } |
253 | return IO_UNKNOWN; | 254 | return IO_UNKNOWN; |
254 | } | 255 | } |
@@ -256,9 +257,9 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
256 | /*-------------------------------------------------------------------------*\ | 257 | /*-------------------------------------------------------------------------*\ |
257 | * Receive with timeout | 258 | * Receive with timeout |
258 | \*-------------------------------------------------------------------------*/ | 259 | \*-------------------------------------------------------------------------*/ |
259 | int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | 260 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { |
260 | int err; | 261 | int err; |
261 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 262 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
262 | for ( ;; ) { | 263 | for ( ;; ) { |
263 | long taken = (long) recv(*ps, data, count, 0); | 264 | long taken = (long) recv(*ps, data, count, 0); |
264 | if (taken > 0) { | 265 | if (taken > 0) { |
@@ -270,7 +271,7 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | |||
270 | if (taken == 0) return IO_CLOSED; | 271 | if (taken == 0) return IO_CLOSED; |
271 | if (err == EINTR) continue; | 272 | if (err == EINTR) continue; |
272 | if (err != EAGAIN) return err; | 273 | if (err != EAGAIN) return err; |
273 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 274 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
274 | } | 275 | } |
275 | return IO_UNKNOWN; | 276 | return IO_UNKNOWN; |
276 | } | 277 | } |
@@ -278,10 +279,10 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | |||
278 | /*-------------------------------------------------------------------------*\ | 279 | /*-------------------------------------------------------------------------*\ |
279 | * Recvfrom with timeout | 280 | * Recvfrom with timeout |
280 | \*-------------------------------------------------------------------------*/ | 281 | \*-------------------------------------------------------------------------*/ |
281 | int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | 282 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, |
282 | SA *addr, socklen_t *len, p_tm tm) { | 283 | SA *addr, socklen_t *len, p_timeout tm) { |
283 | int err; | 284 | int err; |
284 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 285 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
285 | for ( ;; ) { | 286 | for ( ;; ) { |
286 | long taken = (long) recvfrom(*ps, data, count, 0, addr, len); | 287 | long taken = (long) recvfrom(*ps, data, count, 0, addr, len); |
287 | if (taken > 0) { | 288 | if (taken > 0) { |
@@ -293,7 +294,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
293 | if (taken == 0) return IO_CLOSED; | 294 | if (taken == 0) return IO_CLOSED; |
294 | if (err == EINTR) continue; | 295 | if (err == EINTR) continue; |
295 | if (err != EAGAIN) return err; | 296 | if (err != EAGAIN) return err; |
296 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 297 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
297 | } | 298 | } |
298 | return IO_UNKNOWN; | 299 | return IO_UNKNOWN; |
299 | } | 300 | } |
@@ -301,7 +302,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
301 | /*-------------------------------------------------------------------------*\ | 302 | /*-------------------------------------------------------------------------*\ |
302 | * Put socket into blocking mode | 303 | * Put socket into blocking mode |
303 | \*-------------------------------------------------------------------------*/ | 304 | \*-------------------------------------------------------------------------*/ |
304 | void sock_setblocking(p_sock ps) { | 305 | void socket_setblocking(p_socket ps) { |
305 | int flags = fcntl(*ps, F_GETFL, 0); | 306 | int flags = fcntl(*ps, F_GETFL, 0); |
306 | flags &= (~(O_NONBLOCK)); | 307 | flags &= (~(O_NONBLOCK)); |
307 | fcntl(*ps, F_SETFL, flags); | 308 | fcntl(*ps, F_SETFL, flags); |
@@ -310,7 +311,7 @@ void sock_setblocking(p_sock ps) { | |||
310 | /*-------------------------------------------------------------------------*\ | 311 | /*-------------------------------------------------------------------------*\ |
311 | * Put socket into non-blocking mode | 312 | * Put socket into non-blocking mode |
312 | \*-------------------------------------------------------------------------*/ | 313 | \*-------------------------------------------------------------------------*/ |
313 | void sock_setnonblocking(p_sock ps) { | 314 | void socket_setnonblocking(p_socket ps) { |
314 | int flags = fcntl(*ps, F_GETFL, 0); | 315 | int flags = fcntl(*ps, F_GETFL, 0); |
315 | flags |= O_NONBLOCK; | 316 | flags |= O_NONBLOCK; |
316 | fcntl(*ps, F_SETFL, flags); | 317 | fcntl(*ps, F_SETFL, flags); |
@@ -319,7 +320,7 @@ void sock_setnonblocking(p_sock ps) { | |||
319 | /*-------------------------------------------------------------------------*\ | 320 | /*-------------------------------------------------------------------------*\ |
320 | * DNS helpers | 321 | * DNS helpers |
321 | \*-------------------------------------------------------------------------*/ | 322 | \*-------------------------------------------------------------------------*/ |
322 | int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { | 323 | int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { |
323 | *hp = gethostbyaddr(addr, len, AF_INET); | 324 | *hp = gethostbyaddr(addr, len, AF_INET); |
324 | if (*hp) return IO_DONE; | 325 | if (*hp) return IO_DONE; |
325 | else if (h_errno) return h_errno; | 326 | else if (h_errno) return h_errno; |
@@ -327,7 +328,7 @@ int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { | |||
327 | else return IO_UNKNOWN; | 328 | else return IO_UNKNOWN; |
328 | } | 329 | } |
329 | 330 | ||
330 | int sock_gethostbyname(const char *addr, struct hostent **hp) { | 331 | int socket_gethostbyname(const char *addr, struct hostent **hp) { |
331 | *hp = gethostbyname(addr); | 332 | *hp = gethostbyname(addr); |
332 | if (*hp) return IO_DONE; | 333 | if (*hp) return IO_DONE; |
333 | else if (h_errno) return h_errno; | 334 | else if (h_errno) return h_errno; |
@@ -339,7 +340,7 @@ int sock_gethostbyname(const char *addr, struct hostent **hp) { | |||
339 | * Error translation functions | 340 | * Error translation functions |
340 | * Make sure important error messages are standard | 341 | * Make sure important error messages are standard |
341 | \*-------------------------------------------------------------------------*/ | 342 | \*-------------------------------------------------------------------------*/ |
342 | const char *sock_hoststrerror(int err) { | 343 | const char *socket_hoststrerror(int err) { |
343 | if (err <= 0) return io_strerror(err); | 344 | if (err <= 0) return io_strerror(err); |
344 | switch (err) { | 345 | switch (err) { |
345 | case HOST_NOT_FOUND: return "host not found"; | 346 | case HOST_NOT_FOUND: return "host not found"; |
@@ -347,7 +348,7 @@ const char *sock_hoststrerror(int err) { | |||
347 | } | 348 | } |
348 | } | 349 | } |
349 | 350 | ||
350 | const char *sock_strerror(int err) { | 351 | const char *socket_strerror(int err) { |
351 | if (err <= 0) return io_strerror(err); | 352 | if (err <= 0) return io_strerror(err); |
352 | switch (err) { | 353 | switch (err) { |
353 | case EADDRINUSE: return "address already in use"; | 354 | case EADDRINUSE: return "address already in use"; |
@@ -361,7 +362,7 @@ const char *sock_strerror(int err) { | |||
361 | } | 362 | } |
362 | } | 363 | } |
363 | 364 | ||
364 | const char *sock_ioerror(p_sock ps, int err) { | 365 | const char *socket_ioerror(p_socket ps, int err) { |
365 | (void) ps; | 366 | (void) ps; |
366 | return sock_strerror(err); | 367 | return socket_strerror(err); |
367 | } | 368 | } |
diff --git a/src/usocket.h b/src/usocket.h index d3d4f48..e1f7498 100644 --- a/src/usocket.h +++ b/src/usocket.h | |||
@@ -32,9 +32,9 @@ | |||
32 | /* TCP options (nagle algorithm disable) */ | 32 | /* TCP options (nagle algorithm disable) */ |
33 | #include <netinet/tcp.h> | 33 | #include <netinet/tcp.h> |
34 | 34 | ||
35 | typedef int t_sock; | 35 | typedef int t_socket; |
36 | typedef t_sock *p_sock; | 36 | typedef t_socket *p_socket; |
37 | 37 | ||
38 | #define SOCK_INVALID (-1) | 38 | #define SOCKET_INVALID (-1) |
39 | 39 | ||
40 | #endif /* USOCKET_H */ | 40 | #endif /* USOCKET_H */ |
diff --git a/src/wsocket.c b/src/wsocket.c index b533eae..a690dad 100644 --- a/src/wsocket.c +++ b/src/wsocket.c | |||
@@ -17,7 +17,7 @@ static const char *wstrerror(int err); | |||
17 | /*-------------------------------------------------------------------------*\ | 17 | /*-------------------------------------------------------------------------*\ |
18 | * Initializes module | 18 | * Initializes module |
19 | \*-------------------------------------------------------------------------*/ | 19 | \*-------------------------------------------------------------------------*/ |
20 | int sock_open(void) { | 20 | int socket_open(void) { |
21 | WSADATA wsaData; | 21 | WSADATA wsaData; |
22 | WORD wVersionRequested = MAKEWORD(2, 0); | 22 | WORD wVersionRequested = MAKEWORD(2, 0); |
23 | int err = WSAStartup(wVersionRequested, &wsaData ); | 23 | int err = WSAStartup(wVersionRequested, &wsaData ); |
@@ -33,7 +33,7 @@ int sock_open(void) { | |||
33 | /*-------------------------------------------------------------------------*\ | 33 | /*-------------------------------------------------------------------------*\ |
34 | * Close module | 34 | * Close module |
35 | \*-------------------------------------------------------------------------*/ | 35 | \*-------------------------------------------------------------------------*/ |
36 | int sock_close(void) { | 36 | int socket_close(void) { |
37 | WSACleanup(); | 37 | WSACleanup(); |
38 | return 1; | 38 | return 1; |
39 | } | 39 | } |
@@ -46,7 +46,7 @@ int sock_close(void) { | |||
46 | #define WAITFD_E 4 | 46 | #define WAITFD_E 4 |
47 | #define WAITFD_C (WAITFD_E|WAITFD_W) | 47 | #define WAITFD_C (WAITFD_E|WAITFD_W) |
48 | 48 | ||
49 | int sock_waitfd(p_sock ps, int sw, p_tm tm) { | 49 | int socket_waitfd(p_socket ps, int sw, p_tm tm) { |
50 | int ret; | 50 | int ret; |
51 | fd_set rfds, wfds, efds, *rp = NULL, *wp = NULL, *ep = NULL; | 51 | fd_set rfds, wfds, efds, *rp = NULL, *wp = NULL, *ep = NULL; |
52 | struct timeval tv, *tp = NULL; | 52 | struct timeval tv, *tp = NULL; |
@@ -70,7 +70,7 @@ int sock_waitfd(p_sock ps, int sw, p_tm tm) { | |||
70 | /*-------------------------------------------------------------------------*\ | 70 | /*-------------------------------------------------------------------------*\ |
71 | * Select with int timeout in ms | 71 | * Select with int timeout in ms |
72 | \*-------------------------------------------------------------------------*/ | 72 | \*-------------------------------------------------------------------------*/ |
73 | int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { | 73 | int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { |
74 | struct timeval tv; | 74 | struct timeval tv; |
75 | double t = tm_get(tm); | 75 | double t = tm_get(tm); |
76 | tv.tv_sec = (int) t; | 76 | tv.tv_sec = (int) t; |
@@ -84,39 +84,39 @@ int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { | |||
84 | /*-------------------------------------------------------------------------*\ | 84 | /*-------------------------------------------------------------------------*\ |
85 | * Close and inutilize socket | 85 | * Close and inutilize socket |
86 | \*-------------------------------------------------------------------------*/ | 86 | \*-------------------------------------------------------------------------*/ |
87 | void sock_destroy(p_sock ps) { | 87 | void socket_destroy(p_socket ps) { |
88 | if (*ps != SOCK_INVALID) { | 88 | if (*ps != SOCKET_INVALID) { |
89 | sock_setblocking(ps); /* close can take a long time on WIN32 */ | 89 | socket_setblocking(ps); /* close can take a long time on WIN32 */ |
90 | closesocket(*ps); | 90 | closesocket(*ps); |
91 | *ps = SOCK_INVALID; | 91 | *ps = SOCKET_INVALID; |
92 | } | 92 | } |
93 | } | 93 | } |
94 | 94 | ||
95 | /*-------------------------------------------------------------------------*\ | 95 | /*-------------------------------------------------------------------------*\ |
96 | * | 96 | * |
97 | \*-------------------------------------------------------------------------*/ | 97 | \*-------------------------------------------------------------------------*/ |
98 | void sock_shutdown(p_sock ps, int how) { | 98 | void socket_shutdown(p_socket ps, int how) { |
99 | sock_setblocking(ps); | 99 | socket_setblocking(ps); |
100 | shutdown(*ps, how); | 100 | shutdown(*ps, how); |
101 | sock_setnonblocking(ps); | 101 | socket_setnonblocking(ps); |
102 | } | 102 | } |
103 | 103 | ||
104 | /*-------------------------------------------------------------------------*\ | 104 | /*-------------------------------------------------------------------------*\ |
105 | * Creates and sets up a socket | 105 | * Creates and sets up a socket |
106 | \*-------------------------------------------------------------------------*/ | 106 | \*-------------------------------------------------------------------------*/ |
107 | int sock_create(p_sock ps, int domain, int type, int protocol) { | 107 | int socket_create(p_socket ps, int domain, int type, int protocol) { |
108 | *ps = socket(domain, type, protocol); | 108 | *ps = socket(domain, type, protocol); |
109 | if (*ps != SOCK_INVALID) return IO_DONE; | 109 | if (*ps != SOCKET_INVALID) return IO_DONE; |
110 | else return WSAGetLastError(); | 110 | else return WSAGetLastError(); |
111 | } | 111 | } |
112 | 112 | ||
113 | /*-------------------------------------------------------------------------*\ | 113 | /*-------------------------------------------------------------------------*\ |
114 | * Connects or returns error message | 114 | * Connects or returns error message |
115 | \*-------------------------------------------------------------------------*/ | 115 | \*-------------------------------------------------------------------------*/ |
116 | int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { | 116 | int socket_connect(p_socket ps, SA *addr, socklen_t len, p_tm tm) { |
117 | int err; | 117 | int err; |
118 | /* don't call on closed socket */ | 118 | /* don't call on closed socket */ |
119 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 119 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
120 | /* ask system to connect */ | 120 | /* ask system to connect */ |
121 | if (connect(*ps, addr, len) == 0) return IO_DONE; | 121 | if (connect(*ps, addr, len) == 0) return IO_DONE; |
122 | /* make sure the system is trying to connect */ | 122 | /* make sure the system is trying to connect */ |
@@ -125,13 +125,13 @@ int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { | |||
125 | /* zero timeout case optimization */ | 125 | /* zero timeout case optimization */ |
126 | if (tm_iszero(tm)) return IO_TIMEOUT; | 126 | if (tm_iszero(tm)) return IO_TIMEOUT; |
127 | /* we wait until something happens */ | 127 | /* we wait until something happens */ |
128 | err = sock_waitfd(ps, WAITFD_C, tm); | 128 | err = socket_waitfd(ps, WAITFD_C, tm); |
129 | if (err == IO_CLOSED) { | 129 | if (err == IO_CLOSED) { |
130 | int len = sizeof(err); | 130 | int len = sizeof(err); |
131 | /* give windows time to set the error (yes, disgusting) */ | 131 | /* give windows time to set the error (yes, disgusting) */ |
132 | Sleep(10); | 132 | Sleep(10); |
133 | /* find out why we failed */ | 133 | /* find out why we failed */ |
134 | getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len); | 134 | getsockopt(*ps, SOL_SOCKETET, SO_ERROR, (char *)&err, &len); |
135 | /* we KNOW there was an error. if 'why' is 0, we will return | 135 | /* we KNOW there was an error. if 'why' is 0, we will return |
136 | * "unknown error", but it's not really our fault */ | 136 | * "unknown error", but it's not really our fault */ |
137 | return err > 0? err: IO_UNKNOWN; | 137 | return err > 0? err: IO_UNKNOWN; |
@@ -142,44 +142,44 @@ int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { | |||
142 | /*-------------------------------------------------------------------------*\ | 142 | /*-------------------------------------------------------------------------*\ |
143 | * Binds or returns error message | 143 | * Binds or returns error message |
144 | \*-------------------------------------------------------------------------*/ | 144 | \*-------------------------------------------------------------------------*/ |
145 | int sock_bind(p_sock ps, SA *addr, socklen_t len) { | 145 | int socket_bind(p_socket ps, SA *addr, socklen_t len) { |
146 | int err = IO_DONE; | 146 | int err = IO_DONE; |
147 | sock_setblocking(ps); | 147 | socket_setblocking(ps); |
148 | if (bind(*ps, addr, len) < 0) err = WSAGetLastError(); | 148 | if (bind(*ps, addr, len) < 0) err = WSAGetLastError(); |
149 | sock_setnonblocking(ps); | 149 | socket_setnonblocking(ps); |
150 | return err; | 150 | return err; |
151 | } | 151 | } |
152 | 152 | ||
153 | /*-------------------------------------------------------------------------*\ | 153 | /*-------------------------------------------------------------------------*\ |
154 | * | 154 | * |
155 | \*-------------------------------------------------------------------------*/ | 155 | \*-------------------------------------------------------------------------*/ |
156 | int sock_listen(p_sock ps, int backlog) { | 156 | int socket_listen(p_socket ps, int backlog) { |
157 | int err = IO_DONE; | 157 | int err = IO_DONE; |
158 | sock_setblocking(ps); | 158 | socket_setblocking(ps); |
159 | if (listen(*ps, backlog) < 0) err = WSAGetLastError(); | 159 | if (listen(*ps, backlog) < 0) err = WSAGetLastError(); |
160 | sock_setnonblocking(ps); | 160 | socket_setnonblocking(ps); |
161 | return err; | 161 | return err; |
162 | } | 162 | } |
163 | 163 | ||
164 | /*-------------------------------------------------------------------------*\ | 164 | /*-------------------------------------------------------------------------*\ |
165 | * Accept with timeout | 165 | * Accept with timeout |
166 | \*-------------------------------------------------------------------------*/ | 166 | \*-------------------------------------------------------------------------*/ |
167 | int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) { | 167 | int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_tm tm) { |
168 | SA daddr; | 168 | SA daddr; |
169 | socklen_t dlen = sizeof(daddr); | 169 | socklen_t dlen = sizeof(daddr); |
170 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 170 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
171 | if (!addr) addr = &daddr; | 171 | if (!addr) addr = &daddr; |
172 | if (!len) len = &dlen; | 172 | if (!len) len = &dlen; |
173 | for ( ;; ) { | 173 | for ( ;; ) { |
174 | int err; | 174 | int err; |
175 | /* try to get client socket */ | 175 | /* try to get client socket */ |
176 | if ((*pa = accept(*ps, addr, len)) != SOCK_INVALID) return IO_DONE; | 176 | if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE; |
177 | /* find out why we failed */ | 177 | /* find out why we failed */ |
178 | err = WSAGetLastError(); | 178 | err = WSAGetLastError(); |
179 | /* if we failed because there was no connectoin, keep trying */ | 179 | /* if we failed because there was no connectoin, keep trying */ |
180 | if (err != WSAEWOULDBLOCK && err != WSAECONNABORTED) return err; | 180 | if (err != WSAEWOULDBLOCK && err != WSAECONNABORTED) return err; |
181 | /* call select to avoid busy wait */ | 181 | /* call select to avoid busy wait */ |
182 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 182 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
183 | } | 183 | } |
184 | /* can't reach here */ | 184 | /* can't reach here */ |
185 | return IO_UNKNOWN; | 185 | return IO_UNKNOWN; |
@@ -191,11 +191,12 @@ int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) { | |||
191 | * this can take an awful lot of time and we will end up blocked. | 191 | * this can take an awful lot of time and we will end up blocked. |
192 | * Therefore, whoever calls this function should not pass a huge buffer. | 192 | * Therefore, whoever calls this function should not pass a huge buffer. |
193 | \*-------------------------------------------------------------------------*/ | 193 | \*-------------------------------------------------------------------------*/ |
194 | int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | 194 | int socket_send(p_socket ps, const char *data, size_t count, |
195 | size_t *sent, p_tm tm) | ||
195 | { | 196 | { |
196 | int err; | 197 | int err; |
197 | /* avoid making system calls on closed sockets */ | 198 | /* avoid making system calls on closed sockets */ |
198 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 199 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
199 | /* loop until we send something or we give up on error */ | 200 | /* loop until we send something or we give up on error */ |
200 | *sent = 0; | 201 | *sent = 0; |
201 | for ( ;; ) { | 202 | for ( ;; ) { |
@@ -211,7 +212,7 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | |||
211 | /* we can only proceed if there was no serious error */ | 212 | /* we can only proceed if there was no serious error */ |
212 | if (err != WSAEWOULDBLOCK) return err; | 213 | if (err != WSAEWOULDBLOCK) return err; |
213 | /* avoid busy wait */ | 214 | /* avoid busy wait */ |
214 | if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; | 215 | if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; |
215 | } | 216 | } |
216 | /* can't reach here */ | 217 | /* can't reach here */ |
217 | return IO_UNKNOWN; | 218 | return IO_UNKNOWN; |
@@ -220,11 +221,11 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) | |||
220 | /*-------------------------------------------------------------------------*\ | 221 | /*-------------------------------------------------------------------------*\ |
221 | * Sendto with timeout | 222 | * Sendto with timeout |
222 | \*-------------------------------------------------------------------------*/ | 223 | \*-------------------------------------------------------------------------*/ |
223 | int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | 224 | int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, |
224 | SA *addr, socklen_t len, p_tm tm) | 225 | SA *addr, socklen_t len, p_tm tm) |
225 | { | 226 | { |
226 | int err; | 227 | int err; |
227 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 228 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
228 | *sent = 0; | 229 | *sent = 0; |
229 | for ( ;; ) { | 230 | for ( ;; ) { |
230 | int put = sendto(*ps, data, (int) count, 0, addr, len); | 231 | int put = sendto(*ps, data, (int) count, 0, addr, len); |
@@ -234,7 +235,7 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
234 | } | 235 | } |
235 | err = WSAGetLastError(); | 236 | err = WSAGetLastError(); |
236 | if (err != WSAEWOULDBLOCK) return err; | 237 | if (err != WSAEWOULDBLOCK) return err; |
237 | if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; | 238 | if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; |
238 | } | 239 | } |
239 | return IO_UNKNOWN; | 240 | return IO_UNKNOWN; |
240 | } | 241 | } |
@@ -242,9 +243,9 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, | |||
242 | /*-------------------------------------------------------------------------*\ | 243 | /*-------------------------------------------------------------------------*\ |
243 | * Receive with timeout | 244 | * Receive with timeout |
244 | \*-------------------------------------------------------------------------*/ | 245 | \*-------------------------------------------------------------------------*/ |
245 | int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | 246 | int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_tm tm) { |
246 | int err; | 247 | int err; |
247 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 248 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
248 | *got = 0; | 249 | *got = 0; |
249 | for ( ;; ) { | 250 | for ( ;; ) { |
250 | int taken = recv(*ps, data, (int) count, 0); | 251 | int taken = recv(*ps, data, (int) count, 0); |
@@ -255,7 +256,7 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | |||
255 | if (taken == 0) return IO_CLOSED; | 256 | if (taken == 0) return IO_CLOSED; |
256 | err = WSAGetLastError(); | 257 | err = WSAGetLastError(); |
257 | if (err != WSAEWOULDBLOCK) return err; | 258 | if (err != WSAEWOULDBLOCK) return err; |
258 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 259 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
259 | } | 260 | } |
260 | return IO_UNKNOWN; | 261 | return IO_UNKNOWN; |
261 | } | 262 | } |
@@ -263,10 +264,10 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { | |||
263 | /*-------------------------------------------------------------------------*\ | 264 | /*-------------------------------------------------------------------------*\ |
264 | * Recvfrom with timeout | 265 | * Recvfrom with timeout |
265 | \*-------------------------------------------------------------------------*/ | 266 | \*-------------------------------------------------------------------------*/ |
266 | int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | 267 | int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, |
267 | SA *addr, socklen_t *len, p_tm tm) { | 268 | SA *addr, socklen_t *len, p_tm tm) { |
268 | int err; | 269 | int err; |
269 | if (*ps == SOCK_INVALID) return IO_CLOSED; | 270 | if (*ps == SOCKET_INVALID) return IO_CLOSED; |
270 | *got = 0; | 271 | *got = 0; |
271 | for ( ;; ) { | 272 | for ( ;; ) { |
272 | int taken = recvfrom(*ps, data, (int) count, 0, addr, len); | 273 | int taken = recvfrom(*ps, data, (int) count, 0, addr, len); |
@@ -277,7 +278,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
277 | if (taken == 0) return IO_CLOSED; | 278 | if (taken == 0) return IO_CLOSED; |
278 | err = WSAGetLastError(); | 279 | err = WSAGetLastError(); |
279 | if (err != WSAEWOULDBLOCK) return err; | 280 | if (err != WSAEWOULDBLOCK) return err; |
280 | if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; | 281 | if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; |
281 | } | 282 | } |
282 | return IO_UNKNOWN; | 283 | return IO_UNKNOWN; |
283 | } | 284 | } |
@@ -285,7 +286,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, | |||
285 | /*-------------------------------------------------------------------------*\ | 286 | /*-------------------------------------------------------------------------*\ |
286 | * Put socket into blocking mode | 287 | * Put socket into blocking mode |
287 | \*-------------------------------------------------------------------------*/ | 288 | \*-------------------------------------------------------------------------*/ |
288 | void sock_setblocking(p_sock ps) { | 289 | void socket_setblocking(p_socket ps) { |
289 | u_long argp = 0; | 290 | u_long argp = 0; |
290 | ioctlsocket(*ps, FIONBIO, &argp); | 291 | ioctlsocket(*ps, FIONBIO, &argp); |
291 | } | 292 | } |
@@ -293,7 +294,7 @@ void sock_setblocking(p_sock ps) { | |||
293 | /*-------------------------------------------------------------------------*\ | 294 | /*-------------------------------------------------------------------------*\ |
294 | * Put socket into non-blocking mode | 295 | * Put socket into non-blocking mode |
295 | \*-------------------------------------------------------------------------*/ | 296 | \*-------------------------------------------------------------------------*/ |
296 | void sock_setnonblocking(p_sock ps) { | 297 | void socket_setnonblocking(p_socket ps) { |
297 | u_long argp = 1; | 298 | u_long argp = 1; |
298 | ioctlsocket(*ps, FIONBIO, &argp); | 299 | ioctlsocket(*ps, FIONBIO, &argp); |
299 | } | 300 | } |
@@ -301,13 +302,13 @@ void sock_setnonblocking(p_sock ps) { | |||
301 | /*-------------------------------------------------------------------------*\ | 302 | /*-------------------------------------------------------------------------*\ |
302 | * DNS helpers | 303 | * DNS helpers |
303 | \*-------------------------------------------------------------------------*/ | 304 | \*-------------------------------------------------------------------------*/ |
304 | int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { | 305 | int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { |
305 | *hp = gethostbyaddr(addr, len, AF_INET); | 306 | *hp = gethostbyaddr(addr, len, AF_INET); |
306 | if (*hp) return IO_DONE; | 307 | if (*hp) return IO_DONE; |
307 | else return WSAGetLastError(); | 308 | else return WSAGetLastError(); |
308 | } | 309 | } |
309 | 310 | ||
310 | int sock_gethostbyname(const char *addr, struct hostent **hp) { | 311 | int socket_gethostbyname(const char *addr, struct hostent **hp) { |
311 | *hp = gethostbyname(addr); | 312 | *hp = gethostbyname(addr); |
312 | if (*hp) return IO_DONE; | 313 | if (*hp) return IO_DONE; |
313 | else return WSAGetLastError(); | 314 | else return WSAGetLastError(); |
@@ -316,7 +317,7 @@ int sock_gethostbyname(const char *addr, struct hostent **hp) { | |||
316 | /*-------------------------------------------------------------------------*\ | 317 | /*-------------------------------------------------------------------------*\ |
317 | * Error translation functions | 318 | * Error translation functions |
318 | \*-------------------------------------------------------------------------*/ | 319 | \*-------------------------------------------------------------------------*/ |
319 | const char *sock_hoststrerror(int err) { | 320 | const char *socket_hoststrerror(int err) { |
320 | if (err <= 0) return io_strerror(err); | 321 | if (err <= 0) return io_strerror(err); |
321 | switch (err) { | 322 | switch (err) { |
322 | case WSAHOST_NOT_FOUND: return "host not found"; | 323 | case WSAHOST_NOT_FOUND: return "host not found"; |
@@ -324,7 +325,7 @@ const char *sock_hoststrerror(int err) { | |||
324 | } | 325 | } |
325 | } | 326 | } |
326 | 327 | ||
327 | const char *sock_strerror(int err) { | 328 | const char *socket_strerror(int err) { |
328 | if (err <= 0) return io_strerror(err); | 329 | if (err <= 0) return io_strerror(err); |
329 | switch (err) { | 330 | switch (err) { |
330 | case WSAEADDRINUSE: return "address already in use"; | 331 | case WSAEADDRINUSE: return "address already in use"; |
@@ -338,9 +339,9 @@ const char *sock_strerror(int err) { | |||
338 | } | 339 | } |
339 | } | 340 | } |
340 | 341 | ||
341 | const char *sock_ioerror(p_sock ps, int err) { | 342 | const char *socket_ioerror(p_socket ps, int err) { |
342 | (void) ps; | 343 | (void) ps; |
343 | return sock_strerror(err); | 344 | return socket_strerror(err); |
344 | } | 345 | } |
345 | 346 | ||
346 | static const char *wstrerror(int err) { | 347 | static const char *wstrerror(int err) { |
diff --git a/src/wsocket.h b/src/wsocket.h index c048c58..e4f0e92 100644 --- a/src/wsocket.h +++ b/src/wsocket.h | |||
@@ -13,9 +13,9 @@ | |||
13 | #include <winsock.h> | 13 | #include <winsock.h> |
14 | 14 | ||
15 | typedef int socklen_t; | 15 | typedef int socklen_t; |
16 | typedef SOCKET t_sock; | 16 | typedef SOCKET t_socket; |
17 | typedef t_sock *p_sock; | 17 | typedef t_socket *p_socket; |
18 | 18 | ||
19 | #define SOCK_INVALID (INVALID_SOCKET) | 19 | #define SOCKET_INVALID (INVALID_SOCKET) |
20 | 20 | ||
21 | #endif /* WSOCKET_H */ | 21 | #endif /* WSOCKET_H */ |
diff --git a/test/ftptest.lua b/test/ftptest.lua index 63d20e6..f35e16f 100644 --- a/test/ftptest.lua +++ b/test/ftptest.lua | |||
@@ -55,27 +55,27 @@ assert(not err and back == index, err) | |||
55 | print("ok") | 55 | print("ok") |
56 | 56 | ||
57 | io.write("erasing before upload: ") | 57 | io.write("erasing before upload: ") |
58 | ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html") | 58 | ret, err = dele("ftp://luasocket:pedrovian@" .. host .. "/index.up.html") |
59 | if not ret then print(err) | 59 | if not ret then print(err) |
60 | else print("ok") end | 60 | else print("ok") end |
61 | 61 | ||
62 | io.write("testing upload: ") | 62 | io.write("testing upload: ") |
63 | ret, err = ftp.put("ftp://luasocket:password@" .. host .. "/index.up.html;type=i", index) | 63 | ret, err = ftp.put("ftp://luasocket:pedrovian@" .. host .. "/index.up.html;type=i", index) |
64 | assert(ret and not err, err) | 64 | assert(ret and not err, err) |
65 | print("ok") | 65 | print("ok") |
66 | 66 | ||
67 | io.write("downloading uploaded file: ") | 67 | io.write("downloading uploaded file: ") |
68 | back, err = ftp.get("ftp://luasocket:password@" .. host .. "/index.up.html;type=i") | 68 | back, err = ftp.get("ftp://luasocket:pedrovian@" .. host .. "/index.up.html;type=i") |
69 | assert(ret and not err and index == back, err) | 69 | assert(ret and not err and index == back, err) |
70 | print("ok") | 70 | print("ok") |
71 | 71 | ||
72 | io.write("erasing after upload/download: ") | 72 | io.write("erasing after upload/download: ") |
73 | ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html") | 73 | ret, err = dele("ftp://luasocket:pedrovian@" .. host .. "/index.up.html") |
74 | assert(ret and not err, err) | 74 | assert(ret and not err, err) |
75 | print("ok") | 75 | print("ok") |
76 | 76 | ||
77 | io.write("testing weird-character translation: ") | 77 | io.write("testing weird-character translation: ") |
78 | back, err = ftp.get("ftp://luasocket:password@" .. host .. "/%23%3f;type=i") | 78 | back, err = ftp.get("ftp://luasocket:pedrovian@" .. host .. "/%23%3f;type=i") |
79 | assert(not err and back == index, err) | 79 | assert(not err and back == index, err) |
80 | print("ok") | 80 | print("ok") |
81 | 81 | ||
@@ -84,7 +84,7 @@ local back = {} | |||
84 | ret, err = ftp.get{ | 84 | ret, err = ftp.get{ |
85 | url = "//stupid:mistake@" .. host .. "/index.html", | 85 | url = "//stupid:mistake@" .. host .. "/index.html", |
86 | user = "luasocket", | 86 | user = "luasocket", |
87 | password = "password", | 87 | password = "pedrovian", |
88 | type = "i", | 88 | type = "i", |
89 | sink = ltn12.sink.table(back) | 89 | sink = ltn12.sink.table(back) |
90 | } | 90 | } |