aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiego Nehab <diego.nehab@gmail.com>2012-04-23 00:18:45 +0800
committerDiego Nehab <diego.nehab@gmail.com>2012-04-23 00:18:45 +0800
commitf960b3872a668ed1b53bd50c5b6a708367332f3c (patch)
treee82a1b113ed40d70afae36d230b6a6048e1d9fab /src
parentf37e0260261f7691246429d227cf7124c291e8b1 (diff)
downloadluasocket-f960b3872a668ed1b53bd50c5b6a708367332f3c.tar.gz
luasocket-f960b3872a668ed1b53bd50c5b6a708367332f3c.tar.bz2
luasocket-f960b3872a668ed1b53bd50c5b6a708367332f3c.zip
Making progress toward a release
Documented headers.lua Update copyright date everywhere Remove RCSID from files Move version back to 2.1 rather than 2.1.1 Fixed url package to support ipv6 hosts Changed "domain" to "family" in tcp and udp structures Implemented getfamily methods
Diffstat (limited to 'src')
-rw-r--r--src/auxiliar.c2
-rw-r--r--src/buffer.c2
-rw-r--r--src/except.c2
-rw-r--r--src/ftp.lua1
-rw-r--r--src/headers.lua1
-rw-r--r--src/http.lua1
-rw-r--r--src/inet.c6
-rw-r--r--src/io.c2
-rw-r--r--src/ltn12.lua1
-rw-r--r--src/luasocket.h2
-rw-r--r--src/makefile2
-rw-r--r--src/mime.c2
-rw-r--r--src/mime.lua1
-rw-r--r--src/options.c2
-rw-r--r--src/select.c2
-rw-r--r--src/smtp.lua1
-rw-r--r--src/socket.lua1
-rw-r--r--src/tcp.c31
-rw-r--r--src/tcp.h2
-rw-r--r--src/timeout.c2
-rw-r--r--src/tp.lua1
-rw-r--r--src/udp.c31
-rw-r--r--src/udp.h2
-rw-r--r--src/unix.c2
-rw-r--r--src/url.lua15
-rw-r--r--src/usocket.c2
-rw-r--r--src/wsocket.c2
27 files changed, 62 insertions, 59 deletions
diff --git a/src/auxiliar.c b/src/auxiliar.c
index c4e5260..de625e9 100644
--- a/src/auxiliar.c
+++ b/src/auxiliar.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Auxiliar routines for class hierarchy manipulation 2* Auxiliar routines for class hierarchy manipulation
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: auxiliar.c,v 1.14 2005/10/07 04:40:59 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8#include <stdio.h> 6#include <stdio.h>
diff --git a/src/buffer.c b/src/buffer.c
index 452a579..d8facd2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Input/Output interface for Lua programs 2* Input/Output interface for Lua programs
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: buffer.c,v 1.29 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include "lua.h" 5#include "lua.h"
8#include "lauxlib.h" 6#include "lauxlib.h"
diff --git a/src/except.c b/src/except.c
index 97c00a3..1d1ade0 100644
--- a/src/except.c
+++ b/src/except.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Simple exception support 2* Simple exception support
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: except.c,v 1.8 2005/09/29 06:11:41 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <stdio.h> 5#include <stdio.h>
8 6
diff --git a/src/ftp.lua b/src/ftp.lua
index 1d5ff77..5aa646b 100644
--- a/src/ftp.lua
+++ b/src/ftp.lua
@@ -2,7 +2,6 @@
2-- FTP support for the Lua language 2-- FTP support for the Lua language
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: ftp.lua,v 1.45 2007/07/11 19:25:47 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/headers.lua b/src/headers.lua
index f92ee7a..41794ba 100644
--- a/src/headers.lua
+++ b/src/headers.lua
@@ -2,7 +2,6 @@
2-- Canonic header field capitalization 2-- Canonic header field capitalization
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id$
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7module("socket.headers") 6module("socket.headers")
8 7
diff --git a/src/http.lua b/src/http.lua
index 029a367..4c7e7d8 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -2,7 +2,6 @@
2-- HTTP/1.1 client support for the Lua language. 2-- HTTP/1.1 client support for the Lua language.
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: http.lua,v 1.72 2009/05/27 09:31:35 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/inet.c b/src/inet.c
index 839fe5f..fd16506 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Internet domain functions 2* Internet domain functions
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: inet.c,v 1.28 2005/10/07 04:40:59 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <stdio.h> 5#include <stdio.h>
8#include <string.h> 6#include <string.h>
@@ -270,8 +268,8 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp)
270/*-------------------------------------------------------------------------*\ 268/*-------------------------------------------------------------------------*\
271* Tries to create a new inet socket 269* Tries to create a new inet socket
272\*-------------------------------------------------------------------------*/ 270\*-------------------------------------------------------------------------*/
273const char *inet_trycreate(p_socket ps, int domain, int type) { 271const char *inet_trycreate(p_socket ps, int family, int type) {
274 return socket_strerror(socket_create(ps, domain, type, 0)); 272 return socket_strerror(socket_create(ps, family, type, 0));
275} 273}
276 274
277/*-------------------------------------------------------------------------*\ 275/*-------------------------------------------------------------------------*\
diff --git a/src/io.c b/src/io.c
index 06dc50e..35f46f7 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Input/Output abstraction 2* Input/Output abstraction
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: io.c,v 1.6 2005/09/29 06:11:41 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include "io.h" 5#include "io.h"
8 6
diff --git a/src/ltn12.lua b/src/ltn12.lua
index b42689a..b7f9a21 100644
--- a/src/ltn12.lua
+++ b/src/ltn12.lua
@@ -2,7 +2,6 @@
2-- LTN12 - Filters, sources, sinks and pumps. 2-- LTN12 - Filters, sources, sinks and pumps.
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: ltn12.lua,v 1.31 2006/04/03 04:45:42 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/luasocket.h b/src/luasocket.h
index 09e758d..f2ca3c1 100644
--- a/src/luasocket.h
+++ b/src/luasocket.h
@@ -11,7 +11,7 @@
11/*-------------------------------------------------------------------------*\ 11/*-------------------------------------------------------------------------*\
12* Current socket library version 12* Current socket library version
13\*-------------------------------------------------------------------------*/ 13\*-------------------------------------------------------------------------*/
14#define LUASOCKET_VERSION "LuaSocket 2.1.1-rc1" 14#define LUASOCKET_VERSION "LuaSocket 2.1-rc1"
15#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2012 Diego Nehab" 15#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2012 Diego Nehab"
16#define LUASOCKET_AUTHORS "Diego Nehab" 16#define LUASOCKET_AUTHORS "Diego Nehab"
17 17
diff --git a/src/makefile b/src/makefile
index 0665c14..6225ce4 100644
--- a/src/makefile
+++ b/src/makefile
@@ -98,7 +98,7 @@ SOCKET_win32=wsocket.obj
98# 98#
99SO=$(SO_$(PLAT)) 99SO=$(SO_$(PLAT))
100O=$(O_$(PLAT)) 100O=$(O_$(PLAT))
101SOCKET_V=2.1.1 101SOCKET_V=2.1
102MIME_V=1.0.3 102MIME_V=1.0.3
103SOCKET_SO=socket.$(SO).$(SOCKET_V) 103SOCKET_SO=socket.$(SO).$(SOCKET_V)
104MIME_SO=mime.$(SO).$(MIME_V) 104MIME_SO=mime.$(SO).$(MIME_V)
diff --git a/src/mime.c b/src/mime.c
index 023559f..a1aaae9 100644
--- a/src/mime.c
+++ b/src/mime.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* MIME support functions 2* MIME support functions
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: mime.c,v 1.29 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
diff --git a/src/mime.lua b/src/mime.lua
index 218b38a..4aaccc8 100644
--- a/src/mime.lua
+++ b/src/mime.lua
@@ -2,7 +2,6 @@
2-- MIME support for the Lua language. 2-- MIME support for the Lua language.
3-- Author: Diego Nehab 3-- Author: Diego Nehab
4-- Conforming to RFCs 2045-2049 4-- Conforming to RFCs 2045-2049
5-- RCS ID: $Id: mime.lua,v 1.29 2007/06/11 23:44:54 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/options.c b/src/options.c
index c122ead..6cae7ee 100644
--- a/src/options.c
+++ b/src/options.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Common option interface 2* Common option interface
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: options.c,v 1.7 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
diff --git a/src/select.c b/src/select.c
index 87b5dc2..b870545 100644
--- a/src/select.c
+++ b/src/select.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Select implementation 2* Select implementation
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: select.c,v 1.23 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
diff --git a/src/smtp.lua b/src/smtp.lua
index e258d62..26808f5 100644
--- a/src/smtp.lua
+++ b/src/smtp.lua
@@ -2,7 +2,6 @@
2-- SMTP client support for the Lua language. 2-- SMTP client support for the Lua language.
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: smtp.lua,v 1.47 2009/05/27 09:31:35 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/socket.lua b/src/socket.lua
index 734da3c..a9219b0 100644
--- a/src/socket.lua
+++ b/src/socket.lua
@@ -1,7 +1,6 @@
1----------------------------------------------------------------------------- 1-----------------------------------------------------------------------------
2-- LuaSocket helper module 2-- LuaSocket helper module
3-- Author: Diego Nehab 3-- Author: Diego Nehab
4-- RCS ID: $Id: socket.lua,v 1.22 2005/11/22 08:33:29 diego Exp $
5----------------------------------------------------------------------------- 4-----------------------------------------------------------------------------
6 5
7----------------------------------------------------------------------------- 6-----------------------------------------------------------------------------
diff --git a/src/tcp.c b/src/tcp.c
index 3146467..872b1c6 100644
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* TCP object 2* TCP object
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: tcp.c,v 1.42 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
@@ -23,6 +21,7 @@ static int global_create6(lua_State *L);
23static int global_connect6(lua_State *L); 21static int global_connect6(lua_State *L);
24static int meth_connect(lua_State *L); 22static int meth_connect(lua_State *L);
25static int meth_listen(lua_State *L); 23static int meth_listen(lua_State *L);
24static int meth_getfamily(lua_State *L);
26static int meth_bind(lua_State *L); 25static int meth_bind(lua_State *L);
27static int meth_send(lua_State *L); 26static int meth_send(lua_State *L);
28static int meth_getstats(lua_State *L); 27static int meth_getstats(lua_State *L);
@@ -49,6 +48,7 @@ static luaL_Reg tcp_methods[] = {
49 {"close", meth_close}, 48 {"close", meth_close},
50 {"connect", meth_connect}, 49 {"connect", meth_connect},
51 {"dirty", meth_dirty}, 50 {"dirty", meth_dirty},
51 {"getfamily", meth_getfamily},
52 {"getfd", meth_getfd}, 52 {"getfd", meth_getfd},
53 {"getoption", meth_getoption}, 53 {"getoption", meth_getoption},
54 {"getpeername", meth_getpeername}, 54 {"getpeername", meth_getpeername},
@@ -218,7 +218,7 @@ static int meth_bind(lua_State *L)
218 struct addrinfo bindhints; 218 struct addrinfo bindhints;
219 memset(&bindhints, 0, sizeof(bindhints)); 219 memset(&bindhints, 0, sizeof(bindhints));
220 bindhints.ai_socktype = SOCK_STREAM; 220 bindhints.ai_socktype = SOCK_STREAM;
221 bindhints.ai_family = tcp->domain; 221 bindhints.ai_family = tcp->family;
222 bindhints.ai_flags = AI_PASSIVE; 222 bindhints.ai_flags = AI_PASSIVE;
223 err = inet_trybind(&tcp->sock, address, port, &bindhints); 223 err = inet_trybind(&tcp->sock, address, port, &bindhints);
224 if (err) { 224 if (err) {
@@ -243,7 +243,7 @@ static int meth_connect(lua_State *L)
243 memset(&connecthints, 0, sizeof(connecthints)); 243 memset(&connecthints, 0, sizeof(connecthints));
244 connecthints.ai_socktype = SOCK_STREAM; 244 connecthints.ai_socktype = SOCK_STREAM;
245 /* make sure we try to connect only to the same family */ 245 /* make sure we try to connect only to the same family */
246 connecthints.ai_family = tcp->domain; 246 connecthints.ai_family = tcp->family;
247 timeout_markstart(&tcp->tm); 247 timeout_markstart(&tcp->tm);
248 err = inet_tryconnect(&tcp->sock, address, port, 248 err = inet_tryconnect(&tcp->sock, address, port,
249 &tcp->tm, &connecthints); 249 &tcp->tm, &connecthints);
@@ -270,6 +270,21 @@ static int meth_close(lua_State *L)
270} 270}
271 271
272/*-------------------------------------------------------------------------*\ 272/*-------------------------------------------------------------------------*\
273* Returns family as string
274\*-------------------------------------------------------------------------*/
275static int meth_getfamily(lua_State *L)
276{
277 p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
278 if (tcp->family == PF_INET6) {
279 lua_pushliteral(L, "inet6");
280 return 1;
281 } else {
282 lua_pushliteral(L, "inet4");
283 return 1;
284 }
285}
286
287/*-------------------------------------------------------------------------*\
273* Puts the sockt in listen mode 288* Puts the sockt in listen mode
274\*-------------------------------------------------------------------------*/ 289\*-------------------------------------------------------------------------*/
275static int meth_listen(lua_State *L) 290static int meth_listen(lua_State *L)
@@ -346,9 +361,9 @@ static int meth_settimeout(lua_State *L)
346/*-------------------------------------------------------------------------*\ 361/*-------------------------------------------------------------------------*\
347* Creates a master tcp object 362* Creates a master tcp object
348\*-------------------------------------------------------------------------*/ 363\*-------------------------------------------------------------------------*/
349static int tcp_create(lua_State *L, int domain) { 364static int tcp_create(lua_State *L, int family) {
350 t_socket sock; 365 t_socket sock;
351 const char *err = inet_trycreate(&sock, domain, SOCK_STREAM); 366 const char *err = inet_trycreate(&sock, family, SOCK_STREAM);
352 /* try to allocate a system socket */ 367 /* try to allocate a system socket */
353 if (!err) { 368 if (!err) {
354 /* allocate tcp object */ 369 /* allocate tcp object */
@@ -357,7 +372,7 @@ static int tcp_create(lua_State *L, int domain) {
357 auxiliar_setclass(L, "tcp{master}", -1); 372 auxiliar_setclass(L, "tcp{master}", -1);
358 /* initialize remaining structure fields */ 373 /* initialize remaining structure fields */
359 socket_setnonblocking(&sock); 374 socket_setnonblocking(&sock);
360 if (domain == PF_INET6) { 375 if (family == PF_INET6) {
361 int yes = 1; 376 int yes = 1;
362 setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, 377 setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
363 (void *)&yes, sizeof(yes)); 378 (void *)&yes, sizeof(yes));
@@ -367,7 +382,7 @@ static int tcp_create(lua_State *L, int domain) {
367 (p_error) socket_ioerror, &tcp->sock); 382 (p_error) socket_ioerror, &tcp->sock);
368 timeout_init(&tcp->tm, -1, -1); 383 timeout_init(&tcp->tm, -1, -1);
369 buffer_init(&tcp->buf, &tcp->io, &tcp->tm); 384 buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
370 tcp->domain = domain; 385 tcp->family = family;
371 return 1; 386 return 1;
372 } else { 387 } else {
373 lua_pushnil(L); 388 lua_pushnil(L);
diff --git a/src/tcp.h b/src/tcp.h
index 4dc9c4a..eded620 100644
--- a/src/tcp.h
+++ b/src/tcp.h
@@ -25,7 +25,7 @@ typedef struct t_tcp_ {
25 t_io io; 25 t_io io;
26 t_buffer buf; 26 t_buffer buf;
27 t_timeout tm; 27 t_timeout tm;
28 int domain; 28 int family;
29} t_tcp; 29} t_tcp;
30 30
31typedef t_tcp *p_tcp; 31typedef t_tcp *p_tcp;
diff --git a/src/timeout.c b/src/timeout.c
index a3f1318..c7354b5 100644
--- a/src/timeout.c
+++ b/src/timeout.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Timeout management functions 2* Timeout management functions
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: timeout.c,v 1.31 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <stdio.h> 5#include <stdio.h>
8#include <limits.h> 6#include <limits.h>
diff --git a/src/tp.lua b/src/tp.lua
index adeb4b0..2ffe9a4 100644
--- a/src/tp.lua
+++ b/src/tp.lua
@@ -2,7 +2,6 @@
2-- Unified SMTP/FTP subsystem 2-- Unified SMTP/FTP subsystem
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: tp.lua,v 1.23 2009/05/27 09:31:35 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
diff --git a/src/udp.c b/src/udp.c
index 386051a..bfa934f 100644
--- a/src/udp.c
+++ b/src/udp.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* UDP object 2* UDP object
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: udp.c,v 1.30 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
@@ -32,6 +30,7 @@ static int meth_send(lua_State *L);
32static int meth_sendto(lua_State *L); 30static int meth_sendto(lua_State *L);
33static int meth_receive(lua_State *L); 31static int meth_receive(lua_State *L);
34static int meth_receivefrom(lua_State *L); 32static int meth_receivefrom(lua_State *L);
33static int meth_getfamily(lua_State *L);
35static int meth_getsockname(lua_State *L); 34static int meth_getsockname(lua_State *L);
36static int meth_getpeername(lua_State *L); 35static int meth_getpeername(lua_State *L);
37static int meth_setsockname(lua_State *L); 36static int meth_setsockname(lua_State *L);
@@ -50,6 +49,7 @@ static luaL_Reg udp_methods[] = {
50 {"__tostring", auxiliar_tostring}, 49 {"__tostring", auxiliar_tostring},
51 {"close", meth_close}, 50 {"close", meth_close},
52 {"dirty", meth_dirty}, 51 {"dirty", meth_dirty},
52 {"getfamily", meth_getfamily},
53 {"getfd", meth_getfd}, 53 {"getfd", meth_getfd},
54 {"getpeername", meth_getpeername}, 54 {"getpeername", meth_getpeername},
55 {"getsockname", meth_getsockname}, 55 {"getsockname", meth_getsockname},
@@ -227,6 +227,21 @@ static int meth_receivefrom(lua_State *L) {
227} 227}
228 228
229/*-------------------------------------------------------------------------*\ 229/*-------------------------------------------------------------------------*\
230* Returns family as string
231\*-------------------------------------------------------------------------*/
232static int meth_getfamily(lua_State *L)
233{
234 p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
235 if (udp->family == PF_INET6) {
236 lua_pushliteral(L, "inet6");
237 return 1;
238 } else {
239 lua_pushliteral(L, "inet4");
240 return 1;
241 }
242}
243
244/*-------------------------------------------------------------------------*\
230* Select support methods 245* Select support methods
231\*-------------------------------------------------------------------------*/ 246\*-------------------------------------------------------------------------*/
232static int meth_getfd(lua_State *L) { 247static int meth_getfd(lua_State *L) {
@@ -302,7 +317,7 @@ static int meth_setpeername(lua_State *L) {
302 memset(&connecthints, 0, sizeof(connecthints)); 317 memset(&connecthints, 0, sizeof(connecthints));
303 connecthints.ai_socktype = SOCK_DGRAM; 318 connecthints.ai_socktype = SOCK_DGRAM;
304 /* make sure we try to connect only to the same family */ 319 /* make sure we try to connect only to the same family */
305 connecthints.ai_family = udp->domain; 320 connecthints.ai_family = udp->family;
306 err = inet_tryconnect(&udp->sock, address, port, 321 err = inet_tryconnect(&udp->sock, address, port,
307 tm, &connecthints); 322 tm, &connecthints);
308 if (err) { 323 if (err) {
@@ -338,7 +353,7 @@ static int meth_setsockname(lua_State *L) {
338 struct addrinfo bindhints; 353 struct addrinfo bindhints;
339 memset(&bindhints, 0, sizeof(bindhints)); 354 memset(&bindhints, 0, sizeof(bindhints));
340 bindhints.ai_socktype = SOCK_DGRAM; 355 bindhints.ai_socktype = SOCK_DGRAM;
341 bindhints.ai_family = udp->domain; 356 bindhints.ai_family = udp->family;
342 bindhints.ai_flags = AI_PASSIVE; 357 bindhints.ai_flags = AI_PASSIVE;
343 err = inet_trybind(&udp->sock, address, port, &bindhints); 358 err = inet_trybind(&udp->sock, address, port, &bindhints);
344 if (err) { 359 if (err) {
@@ -356,9 +371,9 @@ static int meth_setsockname(lua_State *L) {
356/*-------------------------------------------------------------------------*\ 371/*-------------------------------------------------------------------------*\
357* Creates a master udp object 372* Creates a master udp object
358\*-------------------------------------------------------------------------*/ 373\*-------------------------------------------------------------------------*/
359static int udp_create(lua_State *L, int domain) { 374static int udp_create(lua_State *L, int family) {
360 t_socket sock; 375 t_socket sock;
361 const char *err = inet_trycreate(&sock, domain, SOCK_DGRAM); 376 const char *err = inet_trycreate(&sock, family, SOCK_DGRAM);
362 /* try to allocate a system socket */ 377 /* try to allocate a system socket */
363 if (!err) { 378 if (!err) {
364 /* allocate udp object */ 379 /* allocate udp object */
@@ -366,14 +381,14 @@ static int udp_create(lua_State *L, int domain) {
366 auxiliar_setclass(L, "udp{unconnected}", -1); 381 auxiliar_setclass(L, "udp{unconnected}", -1);
367 /* initialize remaining structure fields */ 382 /* initialize remaining structure fields */
368 socket_setnonblocking(&sock); 383 socket_setnonblocking(&sock);
369 if (domain == PF_INET6) { 384 if (family == PF_INET6) {
370 int yes = 1; 385 int yes = 1;
371 setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, 386 setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
372 (void *)&yes, sizeof(yes)); 387 (void *)&yes, sizeof(yes));
373 } 388 }
374 udp->sock = sock; 389 udp->sock = sock;
375 timeout_init(&udp->tm, -1, -1); 390 timeout_init(&udp->tm, -1, -1);
376 udp->domain = domain; 391 udp->family = family;
377 return 1; 392 return 1;
378 } else { 393 } else {
379 lua_pushnil(L); 394 lua_pushnil(L);
diff --git a/src/udp.h b/src/udp.h
index c5b8688..2b831a5 100644
--- a/src/udp.h
+++ b/src/udp.h
@@ -23,7 +23,7 @@
23typedef struct t_udp_ { 23typedef struct t_udp_ {
24 t_socket sock; 24 t_socket sock;
25 t_timeout tm; 25 t_timeout tm;
26 int domain; 26 int family;
27} t_udp; 27} t_udp;
28typedef t_udp *p_udp; 28typedef t_udp *p_udp;
29 29
diff --git a/src/unix.c b/src/unix.c
index 935d4c3..f972738 100644
--- a/src/unix.c
+++ b/src/unix.c
@@ -1,8 +1,6 @@
1/*=========================================================================*\ 1/*=========================================================================*\
2* Unix domain socket 2* Unix domain socket
3* LuaSocket toolkit 3* LuaSocket toolkit
4*
5* RCS ID: $Id: unix.c,v 1.14 2009/05/27 09:31:35 diego Exp $
6\*=========================================================================*/ 4\*=========================================================================*/
7#include <string.h> 5#include <string.h>
8 6
diff --git a/src/url.lua b/src/url.lua
index 1e59771..1bfecad 100644
--- a/src/url.lua
+++ b/src/url.lua
@@ -2,7 +2,6 @@
2-- URI parsing, composition and relative URL resolution 2-- URI parsing, composition and relative URL resolution
3-- LuaSocket toolkit. 3-- LuaSocket toolkit.
4-- Author: Diego Nehab 4-- Author: Diego Nehab
5-- RCS ID: $Id: url.lua,v 1.38 2006/04/03 04:45:42 diego Exp $
6----------------------------------------------------------------------------- 5-----------------------------------------------------------------------------
7 6
8----------------------------------------------------------------------------- 7-----------------------------------------------------------------------------
@@ -16,7 +15,7 @@ module("socket.url")
16----------------------------------------------------------------------------- 15-----------------------------------------------------------------------------
17-- Module version 16-- Module version
18----------------------------------------------------------------------------- 17-----------------------------------------------------------------------------
19_VERSION = "URL 1.0.1" 18_VERSION = "URL 1.0.2"
20 19
21----------------------------------------------------------------------------- 20-----------------------------------------------------------------------------
22-- Encodes a string into its escaped hexadecimal representation 21-- Encodes a string into its escaped hexadecimal representation
@@ -142,7 +141,7 @@ function parse(url, default)
142 parsed.authority = n 141 parsed.authority = n
143 return "" 142 return ""
144 end) 143 end)
145 -- get query stringing 144 -- get query string
146 url = string.gsub(url, "%?(.*)", function(q) 145 url = string.gsub(url, "%?(.*)", function(q)
147 parsed.query = q 146 parsed.query = q
148 return "" 147 return ""
@@ -158,9 +157,12 @@ function parse(url, default)
158 if not authority then return parsed end 157 if not authority then return parsed end
159 authority = string.gsub(authority,"^([^@]*)@", 158 authority = string.gsub(authority,"^([^@]*)@",
160 function(u) parsed.userinfo = u; return "" end) 159 function(u) parsed.userinfo = u; return "" end)
161 authority = string.gsub(authority, ":([^:]*)$", 160 authority = string.gsub(authority, ":([^:%]]*)$",
162 function(p) parsed.port = p; return "" end) 161 function(p) parsed.port = p; return "" end)
163 if authority ~= "" then parsed.host = authority end 162 if authority ~= "" then
163 -- IPv6?
164 parsed.host = string.match(authority, "^%[(.+)%]$") or authority
165 end
164 local userinfo = parsed.userinfo 166 local userinfo = parsed.userinfo
165 if not userinfo then return parsed end 167 if not userinfo then return parsed end
166 userinfo = string.gsub(userinfo, ":([^:]*)$", 168 userinfo = string.gsub(userinfo, ":([^:]*)$",
@@ -185,6 +187,9 @@ function build(parsed)
185 local authority = parsed.authority 187 local authority = parsed.authority
186 if parsed.host then 188 if parsed.host then
187 authority = parsed.host 189 authority = parsed.host
190 if string.find(authority, ":") then -- IPv6?
191 authority = "[" .. authority .. "]"
192 end
188 if parsed.port then authority = authority .. ":" .. parsed.port end 193 if parsed.port then authority = authority .. ":" .. parsed.port end
189 local userinfo = parsed.userinfo 194 local userinfo = parsed.userinfo
190 if parsed.user then 195 if parsed.user then
diff --git a/src/usocket.c b/src/usocket.c
index bf2d19c..80d4d70 100644
--- a/src/usocket.c
+++ b/src/usocket.c
@@ -5,8 +5,6 @@
5* The code is now interrupt-safe. 5* The code is now interrupt-safe.
6* The penalty of calling select to avoid busy-wait is only paid when 6* The penalty of calling select to avoid busy-wait is only paid when
7* the I/O call fail in the first place. 7* the I/O call fail in the first place.
8*
9* RCS ID: $Id: usocket.c,v 1.38 2007/10/13 23:55:20 diego Exp $
10\*=========================================================================*/ 8\*=========================================================================*/
11#include <string.h> 9#include <string.h>
12#include <signal.h> 10#include <signal.h>
diff --git a/src/wsocket.c b/src/wsocket.c
index c82882a..12e6352 100644
--- a/src/wsocket.c
+++ b/src/wsocket.c
@@ -4,8 +4,6 @@
4* 4*
5* The penalty of calling select to avoid busy-wait is only paid when 5* The penalty of calling select to avoid busy-wait is only paid when
6* the I/O call fail in the first place. 6* the I/O call fail in the first place.
7*
8* RCS ID: $Id: wsocket.c,v 1.36 2007/06/11 23:44:54 diego Exp $
9\*=========================================================================*/ 7\*=========================================================================*/
10#include <string.h> 8#include <string.h>
11 9