aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2005-11-20 07:20:26 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2005-11-20 07:20:26 +0000
commitf20f4889bfe5a02cd9b77868b90cc8042352176a (patch)
tree339e085e385190ea5f3a9246c3a790c45036c61c
parent087b4f865d861162eb32a4081bb7c2087688919a (diff)
downloadluasocket-f20f4889bfe5a02cd9b77868b90cc8042352176a.tar.gz
luasocket-f20f4889bfe5a02cd9b77868b90cc8042352176a.tar.bz2
luasocket-f20f4889bfe5a02cd9b77868b90cc8042352176a.zip
Changed prefix of function names to match module names.
Removed some warnings and useless code.
-rw-r--r--config20
-rw-r--r--mime.vcproj2
-rw-r--r--socket.vcproj6
-rw-r--r--src/mime.c57
-rw-r--r--src/options.c4
-rw-r--r--src/select.c37
-rw-r--r--src/socket.h3
-rw-r--r--src/url.lua29
-rw-r--r--src/usocket.c3
-rw-r--r--src/wsocket.c34
-rw-r--r--test/httptest.lua4
11 files changed, 110 insertions, 89 deletions
diff --git a/config b/config
index 255477b..175a885 100644
--- a/config
+++ b/config
@@ -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#
40CC=gcc 40#CC=gcc
41DEF=-DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN 41#DEF=-DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN
42CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common 42#CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common
43LDFLAGS=-bundle -undefined dynamic_lookup 43#LDFLAGS=-bundle -undefined dynamic_lookup
44LD=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 49CC=gcc
50#DEF=-DLUASOCKET_DEBUG 50DEF=-DLUASOCKET_DEBUG
51#CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fpic 51CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fpic
52#LDFLAGS=-O -shared 52LDFLAGS=-O -shared
53#LD=gcc 53LD=gcc
54 54
55#------ 55#------
56# End of makefile configuration 56# End of makefile configuration
diff --git a/mime.vcproj b/mime.vcproj
index f5c57c3..e5c4393 100644
--- a/mime.vcproj
+++ b/mime.vcproj
@@ -72,7 +72,7 @@
72 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MIME_EXPORTS; MIME_API=__declspec(dllexport)" 72 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MIME_EXPORTS; MIME_API=__declspec(dllexport)"
73 RuntimeLibrary="2" 73 RuntimeLibrary="2"
74 UsePrecompiledHeader="0" 74 UsePrecompiledHeader="0"
75 WarningLevel="3" 75 WarningLevel="4"
76 Detect64BitPortabilityProblems="TRUE" 76 Detect64BitPortabilityProblems="TRUE"
77 DebugInformationFormat="0"/> 77 DebugInformationFormat="0"/>
78 <Tool 78 <Tool
diff --git a/socket.vcproj b/socket.vcproj
index 133c902..abca5fb 100644
--- a/socket.vcproj
+++ b/socket.vcproj
@@ -156,6 +156,12 @@
156 </File> 156 </File>
157 <File 157 <File
158 RelativePath="src\wsocket.c"> 158 RelativePath="src\wsocket.c">
159 <FileConfiguration
160 Name="Release|Win32">
161 <Tool
162 Name="VCCLCompilerTool"
163 GeneratePreprocessedFile="0"/>
164 </FileConfiguration>
159 </File> 165 </File>
160 </Filter> 166 </Filter>
161 <Filter 167 <Filter
diff --git a/src/mime.c b/src/mime.c
index 4dfcae5..a41bf40 100644
--- a/src/mime.c
+++ b/src/mime.c
@@ -152,8 +152,8 @@ static int mime_global_wrp(lua_State *L)
152static void b64setup(UC *b64unbase) 152static void b64setup(UC *b64unbase)
153{ 153{
154 int i; 154 int i;
155 for (i = 0; i < 255; i++) b64unbase[i] = 255; 155 for (i = 0; i <= 255; i++) b64unbase[i] = (UC) 255;
156 for (i = 0; i < 64; i++) b64unbase[b64base[i]] = i; 156 for (i = 0; i < 64; i++) b64unbase[b64base[i]] = (UC) i;
157 b64unbase['='] = 0; 157 b64unbase['='] = 0;
158} 158}
159 159
@@ -191,7 +191,7 @@ static size_t b64pad(const UC *input, size_t size,
191 luaL_Buffer *buffer) 191 luaL_Buffer *buffer)
192{ 192{
193 unsigned long value = 0; 193 unsigned long value = 0;
194 UC code[4] = "===="; 194 UC code[4] = {'=', '=', '=', '='};
195 switch (size) { 195 switch (size) {
196 case 1: 196 case 1:
197 value = input[0] << 4; 197 value = input[0] << 4;
@@ -480,38 +480,31 @@ static int mime_global_qp(lua_State *L)
480* Accumulate characters until we are sure about how to deal with them. 480* Accumulate characters until we are sure about how to deal with them.
481* Once we are sure, output the to the buffer, in the correct form. 481* Once we are sure, output the to the buffer, in the correct form.
482\*-------------------------------------------------------------------------*/ 482\*-------------------------------------------------------------------------*/
483static size_t qpdecode(UC c, UC *input, size_t size, 483static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
484 luaL_Buffer *buffer) 484 int d;
485{
486 input[size++] = c; 485 input[size++] = c;
487 /* deal with all characters we can deal */ 486 /* deal with all characters we can deal */
488 while (size > 0) { 487 switch (input[0]) {
489 int c, d; 488 /* if we have an escape character */
490 switch (input[0]) { 489 case '=':
491 /* if we have an escape character */ 490 if (size < 3) return size;
492 case '=': 491 /* eliminate soft line break */
493 if (size < 3) return size; 492 if (input[1] == '\r' && input[2] == '\n') return 0;
494 /* eliminate soft line break */ 493 /* decode quoted representation */
495 if (input[1] == '\r' && input[2] == '\n') return 0; 494 c = qpunbase[input[1]]; d = qpunbase[input[2]];
496 /* decode quoted representation */ 495 /* if it is an invalid, do not decode */
497 c = qpunbase[input[1]]; d = qpunbase[input[2]]; 496 if (c > 15 || d > 15) luaL_addlstring(buffer, (char *)input, 3);
498 /* if it is an invalid, do not decode */ 497 else luaL_putchar(buffer, (c << 4) + d);
499 if (c > 15 || d > 15) luaL_addlstring(buffer, (char *)input, 3); 498 return 0;
500 else luaL_putchar(buffer, (c << 4) + d); 499 case '\r':
501 return 0; 500 if (size < 2) return size;
502 case '\r': 501 if (input[1] == '\n') luaL_addlstring(buffer, (char *)input, 2);
503 if (size < 2) return size; 502 return 0;
504 if (input[1] == '\n') luaL_addlstring(buffer, (char *)input, 2); 503 default:
505 return 0; 504 if (input[0] == '\t' || (input[0] > 31 && input[0] < 127))
506 default: 505 luaL_putchar(buffer, input[0]);
507 if (input[0] == '\t' || (input[0] > 31 && input[0] < 127)) 506 return 0;
508 luaL_putchar(buffer, input[0]);
509 return 0;
510 }
511 input[0] = input[1]; input[1] = input[2];
512 size--;
513 } 507 }
514 return 0;
515} 508}
516 509
517/*-------------------------------------------------------------------------*\ 510/*-------------------------------------------------------------------------*\
diff --git a/src/options.c b/src/options.c
index 0f1ca2c..a464a4b 100644
--- a/src/options.c
+++ b/src/options.c
@@ -80,12 +80,12 @@ int opt_linger(lua_State *L, p_socket ps)
80 lua_gettable(L, 3); 80 lua_gettable(L, 3);
81 if (!lua_isboolean(L, -1)) 81 if (!lua_isboolean(L, -1))
82 luaL_argerror(L, 3, "boolean 'on' field expected"); 82 luaL_argerror(L, 3, "boolean 'on' field expected");
83 li.l_onoff = lua_toboolean(L, -1); 83 li.l_onoff = (u_short) lua_toboolean(L, -1);
84 lua_pushstring(L, "timeout"); 84 lua_pushstring(L, "timeout");
85 lua_gettable(L, 3); 85 lua_gettable(L, 3);
86 if (!lua_isnumber(L, -1)) 86 if (!lua_isnumber(L, -1))
87 luaL_argerror(L, 3, "number 'timeout' field expected"); 87 luaL_argerror(L, 3, "number 'timeout' field expected");
88 li.l_linger = (int) lua_tonumber(L, -1); 88 li.l_linger = (u_short) lua_tonumber(L, -1);
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
diff --git a/src/select.c b/src/select.c
index 5a3d502..99b59f5 100644
--- a/src/select.c
+++ b/src/select.c
@@ -16,11 +16,12 @@
16/*=========================================================================*\ 16/*=========================================================================*\
17* Internal function prototypes. 17* Internal function prototypes.
18\*=========================================================================*/ 18\*=========================================================================*/
19static int getfd(lua_State *L); 19static t_socket getfd(lua_State *L);
20static int dirty(lua_State *L); 20static int dirty(lua_State *L);
21static int collect_fd(lua_State *L, int tab, int max_fd, int itab, fd_set *set); 21static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd,
22 int itab, fd_set *set);
22static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set); 23static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set);
23static void return_fd(lua_State *L, fd_set *set, int max_fd, 24static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
24 int itab, int tab, int start); 25 int itab, int tab, int start);
25static void make_assoc(lua_State *L, int tab); 26static void make_assoc(lua_State *L, int tab);
26static int global_select(lua_State *L); 27static int global_select(lua_State *L);
@@ -49,7 +50,8 @@ int select_open(lua_State *L) {
49* Waits for a set of sockets until a condition is met or timeout. 50* Waits for a set of sockets until a condition is met or timeout.
50\*-------------------------------------------------------------------------*/ 51\*-------------------------------------------------------------------------*/
51static int global_select(lua_State *L) { 52static int global_select(lua_State *L) {
52 int rtab, wtab, itab, max_fd, ret, ndirty; 53 int rtab, wtab, itab, ret, ndirty;
54 t_socket max_fd;
53 fd_set rset, wset; 55 fd_set rset, wset;
54 t_timeout tm; 56 t_timeout tm;
55 double t = luaL_optnumber(L, 3, -1); 57 double t = luaL_optnumber(L, 3, -1);
@@ -58,7 +60,7 @@ static int global_select(lua_State *L) {
58 lua_newtable(L); itab = lua_gettop(L); 60 lua_newtable(L); itab = lua_gettop(L);
59 lua_newtable(L); rtab = lua_gettop(L); 61 lua_newtable(L); rtab = lua_gettop(L);
60 lua_newtable(L); wtab = lua_gettop(L); 62 lua_newtable(L); wtab = lua_gettop(L);
61 max_fd = collect_fd(L, 1, -1, itab, &rset); 63 max_fd = collect_fd(L, 1, SOCKET_INVALID, itab, &rset);
62 ndirty = check_dirty(L, 1, rtab, &rset); 64 ndirty = check_dirty(L, 1, rtab, &rset);
63 t = ndirty > 0? 0.0: t; 65 t = ndirty > 0? 0.0: t;
64 timeout_init(&tm, t, -1); 66 timeout_init(&tm, t, -1);
@@ -83,15 +85,15 @@ static int global_select(lua_State *L) {
83/*=========================================================================*\ 85/*=========================================================================*\
84* Internal functions 86* Internal functions
85\*=========================================================================*/ 87\*=========================================================================*/
86static int getfd(lua_State *L) { 88static t_socket getfd(lua_State *L) {
87 int fd = -1; 89 t_socket fd = SOCKET_INVALID;
88 lua_pushstring(L, "getfd"); 90 lua_pushstring(L, "getfd");
89 lua_gettable(L, -2); 91 lua_gettable(L, -2);
90 if (!lua_isnil(L, -1)) { 92 if (!lua_isnil(L, -1)) {
91 lua_pushvalue(L, -2); 93 lua_pushvalue(L, -2);
92 lua_call(L, 1, 1); 94 lua_call(L, 1, 1);
93 if (lua_isnumber(L, -1)) 95 if (lua_isnumber(L, -1))
94 fd = (int) lua_tonumber(L, -1); 96 fd = (t_socket) lua_tonumber(L, -1);
95 } 97 }
96 lua_pop(L, 1); 98 lua_pop(L, 1);
97 return fd; 99 return fd;
@@ -110,13 +112,13 @@ static int dirty(lua_State *L) {
110 return is; 112 return is;
111} 113}
112 114
113static int collect_fd(lua_State *L, int tab, int max_fd, 115static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd,
114 int itab, fd_set *set) { 116 int itab, fd_set *set) {
115 int i = 1; 117 int i = 1;
116 if (lua_isnil(L, tab)) 118 if (lua_isnil(L, tab))
117 return max_fd; 119 return max_fd;
118 while (1) { 120 while (1) {
119 int fd; 121 t_socket fd;
120 lua_pushnumber(L, i); 122 lua_pushnumber(L, i);
121 lua_gettable(L, tab); 123 lua_gettable(L, tab);
122 if (lua_isnil(L, -1)) { 124 if (lua_isnil(L, -1)) {
@@ -124,9 +126,10 @@ static int collect_fd(lua_State *L, int tab, int max_fd,
124 break; 126 break;
125 } 127 }
126 fd = getfd(L); 128 fd = getfd(L);
127 if (fd >= 0) { 129 if (fd != SOCKET_INVALID) {
128 FD_SET(fd, set); 130 FD_SET(fd, set);
129 if (max_fd < fd) max_fd = fd; 131 if (max_fd == SOCKET_INVALID || max_fd < fd)
132 max_fd = fd;
130 lua_pushnumber(L, fd); 133 lua_pushnumber(L, fd);
131 lua_pushvalue(L, -2); 134 lua_pushvalue(L, -2);
132 lua_settable(L, itab); 135 lua_settable(L, itab);
@@ -141,8 +144,8 @@ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
141 int ndirty = 0, i = 1; 144 int ndirty = 0, i = 1;
142 if (lua_isnil(L, tab)) 145 if (lua_isnil(L, tab))
143 return 0; 146 return 0;
144 while (1) { 147 while (1) {
145 int fd; 148 t_socket fd;
146 lua_pushnumber(L, i); 149 lua_pushnumber(L, i);
147 lua_gettable(L, tab); 150 lua_gettable(L, tab);
148 if (lua_isnil(L, -1)) { 151 if (lua_isnil(L, -1)) {
@@ -150,7 +153,7 @@ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
150 break; 153 break;
151 } 154 }
152 fd = getfd(L); 155 fd = getfd(L);
153 if (fd >= 0 && dirty(L)) { 156 if (fd != SOCKET_INVALID && dirty(L)) {
154 lua_pushnumber(L, ++ndirty); 157 lua_pushnumber(L, ++ndirty);
155 lua_pushvalue(L, -2); 158 lua_pushvalue(L, -2);
156 lua_settable(L, dtab); 159 lua_settable(L, dtab);
@@ -162,9 +165,9 @@ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
162 return ndirty; 165 return ndirty;
163} 166}
164 167
165static void return_fd(lua_State *L, fd_set *set, int max_fd, 168static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
166 int itab, int tab, int start) { 169 int itab, int tab, int start) {
167 int fd; 170 t_socket fd;
168 for (fd = 0; fd < max_fd; fd++) { 171 for (fd = 0; fd < max_fd; fd++) {
169 if (FD_ISSET(fd, set)) { 172 if (FD_ISSET(fd, set)) {
170 lua_pushnumber(L, ++start); 173 lua_pushnumber(L, ++start);
diff --git a/src/socket.h b/src/socket.h
index a599d8a..de5d79f 100644
--- a/src/socket.h
+++ b/src/socket.h
@@ -50,7 +50,8 @@ void socket_setnonblocking(p_socket ps);
50void socket_setblocking(p_socket ps); 50void socket_setblocking(p_socket ps);
51 51
52int socket_waitfd(p_socket ps, int sw, p_timeout tm); 52int socket_waitfd(p_socket ps, int sw, p_timeout tm);
53int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm); 53int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
54 p_timeout tm);
54 55
55int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm); 56int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm);
56int socket_create(p_socket ps, int domain, int type, int protocol); 57int socket_create(p_socket ps, int domain, int type, int protocol);
diff --git a/src/url.lua b/src/url.lua
index ec62ad6..52e88da 100644
--- a/src/url.lua
+++ b/src/url.lua
@@ -130,29 +130,41 @@ function parse(url, default)
130 -- remove whitespace 130 -- remove whitespace
131 -- url = string.gsub(url, "%s", "") 131 -- url = string.gsub(url, "%s", "")
132 -- get fragment 132 -- get fragment
133 url = string.gsub(url, "#(.*)$", function(f) parsed.fragment = f end) 133 url = string.gsub(url, "#(.*)$", function(f)
134 parsed.fragment = f
135 return ""
136 end)
134 -- get scheme 137 -- get scheme
135 url = string.gsub(url, "^([%w][%w%+%-%.]*)%:", 138 url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
136 function(s) parsed.scheme = s end) 139 function(s) parsed.scheme = s; return "" end)
137 -- get authority 140 -- get authority
138 url = string.gsub(url, "^//([^/]*)", function(n) parsed.authority = n end) 141 url = string.gsub(url, "^//([^/]*)", function(n)
142 parsed.authority = n
143 return ""
144 end)
139 -- get query stringing 145 -- get query stringing
140 url = string.gsub(url, "%?(.*)", function(q) parsed.query = q end) 146 url = string.gsub(url, "%?(.*)", function(q)
147 parsed.query = q
148 return ""
149 end)
141 -- get params 150 -- get params
142 url = string.gsub(url, "%;(.*)", function(p) parsed.params = p end) 151 url = string.gsub(url, "%;(.*)", function(p)
152 parsed.params = p
153 return ""
154 end)
143 -- path is whatever was left 155 -- path is whatever was left
144 if url ~= "" then parsed.path = url end 156 if url ~= "" then parsed.path = url end
145 local authority = parsed.authority 157 local authority = parsed.authority
146 if not authority then return parsed end 158 if not authority then return parsed end
147 authority = string.gsub(authority,"^([^@]*)@", 159 authority = string.gsub(authority,"^([^@]*)@",
148 function(u) parsed.userinfo = u end) 160 function(u) parsed.userinfo = u; return "" end)
149 authority = string.gsub(authority, ":([^:]*)$", 161 authority = string.gsub(authority, ":([^:]*)$",
150 function(p) parsed.port = p end) 162 function(p) parsed.port = p; return "" end)
151 if authority ~= "" then parsed.host = authority end 163 if authority ~= "" then parsed.host = authority end
152 local userinfo = parsed.userinfo 164 local userinfo = parsed.userinfo
153 if not userinfo then return parsed end 165 if not userinfo then return parsed end
154 userinfo = string.gsub(userinfo, ":([^:]*)$", 166 userinfo = string.gsub(userinfo, ":([^:]*)$",
155 function(p) parsed.password = p end) 167 function(p) parsed.password = p; return "" end)
156 parsed.user = userinfo 168 parsed.user = userinfo
157 return parsed 169 return parsed
158end 170end
@@ -283,4 +295,3 @@ function build_path(parsed, unsafe)
283 if parsed.is_absolute then path = "/" .. path end 295 if parsed.is_absolute then path = "/" .. path end
284 return path 296 return path
285end 297end
286
diff --git a/src/usocket.c b/src/usocket.c
index e9db6dd..6a0b178 100644
--- a/src/usocket.c
+++ b/src/usocket.c
@@ -102,7 +102,8 @@ void socket_destroy(p_socket ps) {
102/*-------------------------------------------------------------------------*\ 102/*-------------------------------------------------------------------------*\
103* Select with timeout control 103* Select with timeout control
104\*-------------------------------------------------------------------------*/ 104\*-------------------------------------------------------------------------*/
105int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm) { 105int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
106 p_timeout tm) {
106 int ret; 107 int ret;
107 do { 108 do {
108 struct timeval tv; 109 struct timeval tv;
diff --git a/src/wsocket.c b/src/wsocket.c
index a690dad..dce333b 100644
--- a/src/wsocket.c
+++ b/src/wsocket.c
@@ -46,16 +46,20 @@ int socket_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
49int socket_waitfd(p_socket ps, int sw, p_tm tm) { 49int socket_waitfd(p_socket ps, int sw, p_timeout 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;
53 double t; 53 double t;
54 if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ 54 if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
55 if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; } 55 if (sw & WAITFD_R) {
56 FD_ZERO(&rfds);
57 FD_SET(*ps, &rfds);
58 rp = &rfds;
59 }
56 if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } 60 if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; }
57 if (sw & WAITFD_C) { FD_ZERO(&efds); FD_SET(*ps, &efds); ep = &efds; } 61 if (sw & WAITFD_C) { FD_ZERO(&efds); FD_SET(*ps, &efds); ep = &efds; }
58 if ((t = tm_get(tm)) >= 0.0) { 62 if ((t = timeout_get(tm)) >= 0.0) {
59 tv.tv_sec = (int) t; 63 tv.tv_sec = (int) t;
60 tv.tv_usec = (int) ((t-tv.tv_sec)*1.0e6); 64 tv.tv_usec = (int) ((t-tv.tv_sec)*1.0e6);
61 tp = &tv; 65 tp = &tv;
@@ -70,9 +74,10 @@ int socket_waitfd(p_socket ps, int sw, p_tm tm) {
70/*-------------------------------------------------------------------------*\ 74/*-------------------------------------------------------------------------*\
71* Select with int timeout in ms 75* Select with int timeout in ms
72\*-------------------------------------------------------------------------*/ 76\*-------------------------------------------------------------------------*/
73int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { 77int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
78 p_timeout tm) {
74 struct timeval tv; 79 struct timeval tv;
75 double t = tm_get(tm); 80 double t = timeout_get(tm);
76 tv.tv_sec = (int) t; 81 tv.tv_sec = (int) t;
77 tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6); 82 tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6);
78 if (n <= 0) { 83 if (n <= 0) {
@@ -113,7 +118,7 @@ int socket_create(p_socket ps, int domain, int type, int protocol) {
113/*-------------------------------------------------------------------------*\ 118/*-------------------------------------------------------------------------*\
114* Connects or returns error message 119* Connects or returns error message
115\*-------------------------------------------------------------------------*/ 120\*-------------------------------------------------------------------------*/
116int socket_connect(p_socket ps, SA *addr, socklen_t len, p_tm tm) { 121int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
117 int err; 122 int err;
118 /* don't call on closed socket */ 123 /* don't call on closed socket */
119 if (*ps == SOCKET_INVALID) return IO_CLOSED; 124 if (*ps == SOCKET_INVALID) return IO_CLOSED;
@@ -123,7 +128,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_tm tm) {
123 err = WSAGetLastError(); 128 err = WSAGetLastError();
124 if (err != WSAEWOULDBLOCK && err != WSAEINPROGRESS) return err; 129 if (err != WSAEWOULDBLOCK && err != WSAEINPROGRESS) return err;
125 /* zero timeout case optimization */ 130 /* zero timeout case optimization */
126 if (tm_iszero(tm)) return IO_TIMEOUT; 131 if (timeout_iszero(tm)) return IO_TIMEOUT;
127 /* we wait until something happens */ 132 /* we wait until something happens */
128 err = socket_waitfd(ps, WAITFD_C, tm); 133 err = socket_waitfd(ps, WAITFD_C, tm);
129 if (err == IO_CLOSED) { 134 if (err == IO_CLOSED) {
@@ -131,7 +136,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_tm tm) {
131 /* give windows time to set the error (yes, disgusting) */ 136 /* give windows time to set the error (yes, disgusting) */
132 Sleep(10); 137 Sleep(10);
133 /* find out why we failed */ 138 /* find out why we failed */
134 getsockopt(*ps, SOL_SOCKETET, SO_ERROR, (char *)&err, &len); 139 getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
135 /* we KNOW there was an error. if 'why' is 0, we will return 140 /* we KNOW there was an error. if 'why' is 0, we will return
136 * "unknown error", but it's not really our fault */ 141 * "unknown error", but it's not really our fault */
137 return err > 0? err: IO_UNKNOWN; 142 return err > 0? err: IO_UNKNOWN;
@@ -164,7 +169,8 @@ int socket_listen(p_socket ps, int backlog) {
164/*-------------------------------------------------------------------------*\ 169/*-------------------------------------------------------------------------*\
165* Accept with timeout 170* Accept with timeout
166\*-------------------------------------------------------------------------*/ 171\*-------------------------------------------------------------------------*/
167int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_tm tm) { 172int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
173 p_timeout tm) {
168 SA daddr; 174 SA daddr;
169 socklen_t dlen = sizeof(daddr); 175 socklen_t dlen = sizeof(daddr);
170 if (*ps == SOCKET_INVALID) return IO_CLOSED; 176 if (*ps == SOCKET_INVALID) return IO_CLOSED;
@@ -192,7 +198,7 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_tm tm) {
192* Therefore, whoever calls this function should not pass a huge buffer. 198* Therefore, whoever calls this function should not pass a huge buffer.
193\*-------------------------------------------------------------------------*/ 199\*-------------------------------------------------------------------------*/
194int socket_send(p_socket ps, const char *data, size_t count, 200int socket_send(p_socket ps, const char *data, size_t count,
195 size_t *sent, p_tm tm) 201 size_t *sent, p_timeout tm)
196{ 202{
197 int err; 203 int err;
198 /* avoid making system calls on closed sockets */ 204 /* avoid making system calls on closed sockets */
@@ -222,7 +228,7 @@ int socket_send(p_socket ps, const char *data, size_t count,
222* Sendto with timeout 228* Sendto with timeout
223\*-------------------------------------------------------------------------*/ 229\*-------------------------------------------------------------------------*/
224int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, 230int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
225 SA *addr, socklen_t len, p_tm tm) 231 SA *addr, socklen_t len, p_timeout tm)
226{ 232{
227 int err; 233 int err;
228 if (*ps == SOCKET_INVALID) return IO_CLOSED; 234 if (*ps == SOCKET_INVALID) return IO_CLOSED;
@@ -243,7 +249,7 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
243/*-------------------------------------------------------------------------*\ 249/*-------------------------------------------------------------------------*\
244* Receive with timeout 250* Receive with timeout
245\*-------------------------------------------------------------------------*/ 251\*-------------------------------------------------------------------------*/
246int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_tm tm) { 252int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) {
247 int err; 253 int err;
248 if (*ps == SOCKET_INVALID) return IO_CLOSED; 254 if (*ps == SOCKET_INVALID) return IO_CLOSED;
249 *got = 0; 255 *got = 0;
@@ -265,7 +271,7 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_tm tm) {
265* Recvfrom with timeout 271* Recvfrom with timeout
266\*-------------------------------------------------------------------------*/ 272\*-------------------------------------------------------------------------*/
267int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, 273int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
268 SA *addr, socklen_t *len, p_tm tm) { 274 SA *addr, socklen_t *len, p_timeout tm) {
269 int err; 275 int err;
270 if (*ps == SOCKET_INVALID) return IO_CLOSED; 276 if (*ps == SOCKET_INVALID) return IO_CLOSED;
271 *got = 0; 277 *got = 0;
diff --git a/test/httptest.lua b/test/httptest.lua
index 3816b54..0951389 100644
--- a/test/httptest.lua
+++ b/test/httptest.lua
@@ -22,8 +22,8 @@ http.TIMEOUT = 10
22 22
23local t = socket.gettime() 23local t = socket.gettime()
24 24
25host = host or "localhost" -- "diego.student.princeton.edu" 25host = host or "dell-diego" -- "diego.student.princeton.edu"
26proxy = proxy or "http://localhost:3128" 26proxy = proxy or "http://dell-diego:3128"
27prefix = prefix or "/luasocket-test" 27prefix = prefix or "/luasocket-test"
28cgiprefix = cgiprefix or "/luasocket-test-cgi" 28cgiprefix = cgiprefix or "/luasocket-test-cgi"
29index_file = "index.html" 29index_file = "index.html"