aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/http.lua2
-rw-r--r--src/luasocket.h3
-rw-r--r--src/mime.h3
-rw-r--r--src/mime.lua32
-rw-r--r--src/socket.lua3
-rw-r--r--src/tcp.c6
-rw-r--r--src/udp.c6
-rw-r--r--src/usocket.c6
-rw-r--r--src/wsocket.c6
9 files changed, 32 insertions, 35 deletions
diff --git a/src/http.lua b/src/http.lua
index 9c568bc..cdb435d 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -22,8 +22,6 @@ TIMEOUT = 60
22PORT = 80 22PORT = 80
23-- user agent field sent in request 23-- user agent field sent in request
24USERAGENT = socket.VERSION 24USERAGENT = socket.VERSION
25-- block size used in transfers
26BLOCKSIZE = 2048
27 25
28----------------------------------------------------------------------------- 26-----------------------------------------------------------------------------
29-- Low level HTTP API 27-- Low level HTTP API
diff --git a/src/luasocket.h b/src/luasocket.h
index 6d30605..35dc3d9 100644
--- a/src/luasocket.h
+++ b/src/luasocket.h
@@ -25,7 +25,10 @@
25/*-------------------------------------------------------------------------*\ 25/*-------------------------------------------------------------------------*\
26* Initializes the library. 26* Initializes the library.
27\*-------------------------------------------------------------------------*/ 27\*-------------------------------------------------------------------------*/
28#ifndef LUASOCKET_LIBNAME
28#define LUASOCKET_LIBNAME "socket" 29#define LUASOCKET_LIBNAME "socket"
30#endif
31
29LUASOCKET_API int luaopen_socket(lua_State *L); 32LUASOCKET_API int luaopen_socket(lua_State *L);
30 33
31#endif /* LUASOCKET_H */ 34#endif /* LUASOCKET_H */
diff --git a/src/mime.h b/src/mime.h
index be16920..ad8a573 100644
--- a/src/mime.h
+++ b/src/mime.h
@@ -19,7 +19,10 @@
19#define MIME_API extern 19#define MIME_API extern
20#endif 20#endif
21 21
22#ifndef MIME_LIBNAME
22#define MIME_LIBNAME "mime" 23#define MIME_LIBNAME "mime"
24#endif
25
23MIME_API int luaopen_mime(lua_State *L); 26MIME_API int luaopen_mime(lua_State *L);
24 27
25#endif /* MIME_H */ 28#endif /* MIME_H */
diff --git a/src/mime.lua b/src/mime.lua
index 345bd25..fcdc358 100644
--- a/src/mime.lua
+++ b/src/mime.lua
@@ -12,9 +12,9 @@ local mime = requirelib("mime", "luaopen_mime", getfenv(1))
12local ltn12 = require("ltn12") 12local ltn12 = require("ltn12")
13 13
14-- encode, decode and wrap algorithm tables 14-- encode, decode and wrap algorithm tables
15encodet = {} 15mime.encodet = {}
16decodet = {} 16mime.decodet = {}
17wrapt = {} 17mime.wrapt = {}
18 18
19-- creates a function that chooses a filter by name from a given table 19-- creates a function that chooses a filter by name from a given table
20local function choose(table) 20local function choose(table)
@@ -29,47 +29,47 @@ local function choose(table)
29end 29end
30 30
31-- define the encoding filters 31-- define the encoding filters
32encodet['base64'] = function() 32mime.encodet['base64'] = function()
33 return ltn12.filter.cycle(b64, "") 33 return ltn12.filter.cycle(b64, "")
34end 34end
35 35
36encodet['quoted-printable'] = function(mode) 36mime.encodet['quoted-printable'] = function(mode)
37 return ltn12.filter.cycle(qp, "", 37 return ltn12.filter.cycle(qp, "",
38 (mode == "binary") and "=0D=0A" or "\r\n") 38 (mode == "binary") and "=0D=0A" or "\r\n")
39end 39end
40 40
41-- define the decoding filters 41-- define the decoding filters
42decodet['base64'] = function() 42mime.decodet['base64'] = function()
43 return ltn12.filter.cycle(unb64, "") 43 return ltn12.filter.cycle(unb64, "")
44end 44end
45 45
46decodet['quoted-printable'] = function() 46mime.decodet['quoted-printable'] = function()
47 return ltn12.filter.cycle(unqp, "") 47 return ltn12.filter.cycle(unqp, "")
48end 48end
49 49
50-- define the line-wrap filters 50-- define the line-wrap filters
51wrapt['text'] = function(length) 51mime.wrapt['text'] = function(length)
52 length = length or 76 52 length = length or 76
53 return ltn12.filter.cycle(wrp, length, length) 53 return ltn12.filter.cycle(wrp, length, length)
54end 54end
55wrapt['base64'] = wrapt['text'] 55mime.wrapt['base64'] = wrapt['text']
56wrapt['default'] = wrapt['text'] 56mime.wrapt['default'] = wrapt['text']
57 57
58wrapt['quoted-printable'] = function() 58mime.wrapt['quoted-printable'] = function()
59 return ltn12.filter.cycle(qpwrp, 76, 76) 59 return ltn12.filter.cycle(qpwrp, 76, 76)
60end 60end
61 61
62-- function that choose the encoding, decoding or wrap algorithm 62-- function that choose the encoding, decoding or wrap algorithm
63encode = choose(encodet) 63mime.encode = choose(encodet)
64decode = choose(decodet) 64mime.decode = choose(decodet)
65wrap = choose(wrapt) 65mime.wrap = choose(wrapt)
66 66
67-- define the end-of-line normalization filter 67-- define the end-of-line normalization filter
68function normalize(marker) 68function mime.normalize(marker)
69 return ltn12.filter.cycle(eol, 0, marker) 69 return ltn12.filter.cycle(eol, 0, marker)
70end 70end
71 71
72-- high level stuffing filter 72-- high level stuffing filter
73function stuff() 73function mime.stuff()
74 return ltn12.filter.cycle(dot, 2) 74 return ltn12.filter.cycle(dot, 2)
75end 75end
diff --git a/src/socket.lua b/src/socket.lua
index 4d64651..b3889d7 100644
--- a/src/socket.lua
+++ b/src/socket.lua
@@ -8,7 +8,6 @@
8-- Load LuaSocket from dynamic library 8-- Load LuaSocket from dynamic library
9----------------------------------------------------------------------------- 9-----------------------------------------------------------------------------
10local socket = requirelib("luasocket", "luaopen_socket", getfenv(1)) 10local socket = requirelib("luasocket", "luaopen_socket", getfenv(1))
11_LOADED["socket"] = socket
12 11
13----------------------------------------------------------------------------- 12-----------------------------------------------------------------------------
14-- Auxiliar functions 13-- Auxiliar functions
@@ -31,7 +30,7 @@ function socket.bind(host, port, backlog)
31 sock:setoption("reuseaddr", true) 30 sock:setoption("reuseaddr", true)
32 local res, err = sock:bind(host, port) 31 local res, err = sock:bind(host, port)
33 if not res then return nil, err end 32 if not res then return nil, err end
34 backlog = backlog or 1 33 backlog = backlog or 32
35 res, err = sock:listen(backlog) 34 res, err = sock:listen(backlog)
36 if not res then return nil, err end 35 if not res then return nil, err end
37 return sock 36 return sock
diff --git a/src/tcp.c b/src/tcp.c
index adc2585..cbfebdb 100644
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -130,7 +130,7 @@ static int meth_setoption(lua_State *L)
130static int meth_getfd(lua_State *L) 130static int meth_getfd(lua_State *L)
131{ 131{
132 p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1); 132 p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1);
133 lua_pushnumber(L, tcp->sock); 133 lua_pushnumber(L, (int) tcp->sock);
134 return 1; 134 return 1;
135} 135}
136 136
@@ -164,6 +164,7 @@ static int meth_accept(lua_State *L)
164 p_tcp clnt = lua_newuserdata(L, sizeof(t_tcp)); 164 p_tcp clnt = lua_newuserdata(L, sizeof(t_tcp));
165 aux_setclass(L, "tcp{client}", -1); 165 aux_setclass(L, "tcp{client}", -1);
166 /* initialize structure fields */ 166 /* initialize structure fields */
167 sock_setnonblocking(&sock);
167 clnt->sock = sock; 168 clnt->sock = sock;
168 io_init(&clnt->io, (p_send)sock_send, (p_recv)sock_recv, &clnt->sock); 169 io_init(&clnt->io, (p_send)sock_send, (p_recv)sock_recv, &clnt->sock);
169 tm_init(&clnt->tm, -1, -1); 170 tm_init(&clnt->tm, -1, -1);
@@ -310,10 +311,11 @@ static int global_create(lua_State *L)
310 if (!err) { 311 if (!err) {
311 /* allocate tcp object */ 312 /* allocate tcp object */
312 p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); 313 p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
313 tcp->sock = sock;
314 /* set its type as master object */ 314 /* set its type as master object */
315 aux_setclass(L, "tcp{master}", -1); 315 aux_setclass(L, "tcp{master}", -1);
316 /* initialize remaining structure fields */ 316 /* initialize remaining structure fields */
317 sock_setnonblocking(&sock);
318 tcp->sock = sock;
317 io_init(&tcp->io, (p_send) sock_send, (p_recv) sock_recv, &tcp->sock); 319 io_init(&tcp->io, (p_send) sock_send, (p_recv) sock_recv, &tcp->sock);
318 tm_init(&tcp->tm, -1, -1); 320 tm_init(&tcp->tm, -1, -1);
319 buf_init(&tcp->buf, &tcp->io, &tcp->tm); 321 buf_init(&tcp->buf, &tcp->io, &tcp->tm);
diff --git a/src/udp.c b/src/udp.c
index 512cc0b..d20d61b 100644
--- a/src/udp.c
+++ b/src/udp.c
@@ -208,7 +208,7 @@ static int meth_receivefrom(lua_State *L)
208static int meth_getfd(lua_State *L) 208static int meth_getfd(lua_State *L)
209{ 209{
210 p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1); 210 p_udp udp = (p_udp) aux_checkgroup(L, "udp{any}", 1);
211 lua_pushnumber(L, udp->sock); 211 lua_pushnumber(L, (int) udp->sock);
212 return 1; 212 return 1;
213} 213}
214 214
@@ -328,10 +328,10 @@ static int global_create(lua_State *L)
328 if (!err) { 328 if (!err) {
329 /* allocate tcp object */ 329 /* allocate tcp object */
330 p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp)); 330 p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
331 udp->sock = sock;
332 /* set its type as master object */
333 aux_setclass(L, "udp{unconnected}", -1); 331 aux_setclass(L, "udp{unconnected}", -1);
334 /* initialize remaining structure fields */ 332 /* initialize remaining structure fields */
333 sock_setnonblocking(&sock);
334 udp->sock = sock;
335 tm_init(&udp->tm, -1, -1); 335 tm_init(&udp->tm, -1, -1);
336 return 1; 336 return 1;
337 } else { 337 } else {
diff --git a/src/usocket.c b/src/usocket.c
index ea0f172..617b1ea 100644
--- a/src/usocket.c
+++ b/src/usocket.c
@@ -81,7 +81,6 @@ const char *sock_create(p_sock ps, int domain, int type, int protocol)
81 t_sock sock = socket(domain, type, protocol); 81 t_sock sock = socket(domain, type, protocol);
82 if (sock == SOCK_INVALID) return sock_createstrerror(errno); 82 if (sock == SOCK_INVALID) return sock_createstrerror(errno);
83 *ps = sock; 83 *ps = sock;
84 sock_setnonblocking(ps);
85 return NULL; 84 return NULL;
86} 85}
87 86
@@ -178,10 +177,7 @@ const char *sock_accept(p_sock ps, p_sock pa, SA *addr,
178 do *pa = accept(sock, addr, addr_len); 177 do *pa = accept(sock, addr, addr_len);
179 while (*pa < 0 && errno == EINTR); 178 while (*pa < 0 && errno == EINTR);
180 /* if result is valid, we are done */ 179 /* if result is valid, we are done */
181 if (*pa != SOCK_INVALID) { 180 if (*pa != SOCK_INVALID) return NULL;
182 sock_setnonblocking(pa);
183 return NULL;
184 }
185 /* find out if we failed for a fatal reason */ 181 /* find out if we failed for a fatal reason */
186 if (errno != EWOULDBLOCK && errno != ECONNABORTED) 182 if (errno != EWOULDBLOCK && errno != ECONNABORTED)
187 return sock_acceptstrerror(errno); 183 return sock_acceptstrerror(errno);
diff --git a/src/wsocket.c b/src/wsocket.c
index 84a49dc..e276fe0 100644
--- a/src/wsocket.c
+++ b/src/wsocket.c
@@ -88,7 +88,6 @@ const char *sock_create(p_sock ps, int domain, int type, int protocol)
88 if (sock == SOCK_INVALID) 88 if (sock == SOCK_INVALID)
89 return sock_createstrerror(WSAGetLastError()); 89 return sock_createstrerror(WSAGetLastError());
90 *ps = sock; 90 *ps = sock;
91 sock_setnonblocking(ps);
92 return NULL; 91 return NULL;
93} 92}
94 93
@@ -177,10 +176,7 @@ const char *sock_accept(p_sock ps, p_sock pa, SA *addr,
177 /* try to get client socket */ 176 /* try to get client socket */
178 *pa = accept(sock, addr, addr_len); 177 *pa = accept(sock, addr, addr_len);
179 /* if return is valid, we are done */ 178 /* if return is valid, we are done */
180 if (*pa != SOCK_INVALID) { 179 if (*pa != SOCK_INVALID) return NULL;
181 sock_setnonblocking(pa);
182 return NULL;
183 }
184 /* optimization */ 180 /* optimization */
185 if (timeout == 0) return io_strerror(IO_TIMEOUT); 181 if (timeout == 0) return io_strerror(IO_TIMEOUT);
186 /* otherwise find out why we failed */ 182 /* otherwise find out why we failed */