mirror of
https://github.com/lunarmodules/luasocket.git
synced 2025-07-13 22:24:28 +02:00
Compare commits
2 Commits
7c8858450c
...
hjelmeland
Author | SHA1 | Date | |
---|---|---|---|
5c4fc93d5f | |||
ccef3bc4e2 |
@ -89,7 +89,7 @@ it should be easy to use LuaSocket. Just fire the interpreter and use the
|
||||
Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio
|
||||
> socket = require("socket")
|
||||
> print(socket._VERSION)
|
||||
--> LuaSocket 3.1.0
|
||||
--> LuaSocket 3.0.0
|
||||
</pre>
|
||||
|
||||
<p> Each module loads their dependencies automatically, so you only need to
|
||||
|
@ -69,7 +69,6 @@ local function make_plat(plat)
|
||||
["socket.smtp"] = "src/smtp.lua",
|
||||
ltn12 = "src/ltn12.lua",
|
||||
socket = "src/socket.lua",
|
||||
mbox = "src/mbox.lua",
|
||||
mime = "src/mime.lua"
|
||||
}
|
||||
if plat == "unix"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#--------------------------------------------------------------------------
|
||||
# Distribution makefile
|
||||
#--------------------------------------------------------------------------
|
||||
DIST = luasocket-3.1.0
|
||||
DIST = luasocket-3.0.0
|
||||
|
||||
TEST = \
|
||||
test/README \
|
||||
|
13
src/http.lua
13
src/http.lua
@ -62,7 +62,7 @@ local function receiveheaders(sock, headers)
|
||||
-- unfold any folded values
|
||||
while string.find(line, "^%s") do
|
||||
value = value .. line
|
||||
line, err = sock:receive()
|
||||
line = sock:receive()
|
||||
if err then return nil, err end
|
||||
end
|
||||
-- save pair in table
|
||||
@ -219,11 +219,9 @@ local function adjustproxy(reqt)
|
||||
local proxy = reqt.proxy or _M.PROXY
|
||||
if proxy then
|
||||
proxy = url.parse(proxy)
|
||||
proxy.port = proxy.port or 3128
|
||||
proxy.create = SCHEMES[proxy.scheme].create(reqt)
|
||||
return proxy.host, proxy.port, proxy.create
|
||||
return proxy.host, proxy.port or 3128
|
||||
else
|
||||
return reqt.host, reqt.port, reqt.create
|
||||
return reqt.host, reqt.port
|
||||
end
|
||||
end
|
||||
|
||||
@ -293,10 +291,7 @@ local function adjustrequest(reqt)
|
||||
end
|
||||
|
||||
-- ajust host and port if there is a proxy
|
||||
local proxy_create
|
||||
nreqt.host, nreqt.port, proxy_create = adjustproxy(nreqt)
|
||||
if not reqt.create then nreqt.create = proxy_create end
|
||||
|
||||
nreqt.host, nreqt.port = adjustproxy(nreqt)
|
||||
return nreqt
|
||||
end
|
||||
|
||||
|
@ -290,7 +290,7 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
|
||||
return 2;
|
||||
}
|
||||
lua_pushstring(L, name);
|
||||
lua_pushinteger(L, (int) strtol(port, (char **) NULL, 10));
|
||||
lua_pushstring(L, port);
|
||||
switch (family) {
|
||||
case AF_INET: lua_pushliteral(L, "inet"); break;
|
||||
case AF_INET6: lua_pushliteral(L, "inet6"); break;
|
||||
|
@ -10,7 +10,7 @@
|
||||
/*-------------------------------------------------------------------------* \
|
||||
* Current socket library version
|
||||
\*-------------------------------------------------------------------------*/
|
||||
#define LUASOCKET_VERSION "LuaSocket 3.1.0"
|
||||
#define LUASOCKET_VERSION "LuaSocket 3.0.0"
|
||||
#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2013 Diego Nehab"
|
||||
|
||||
/*-------------------------------------------------------------------------*\
|
||||
|
@ -272,7 +272,7 @@ SOCKET_win64=wsocket.obj
|
||||
#
|
||||
SO=$(SO_$(PLAT))
|
||||
O=$(O_$(PLAT))
|
||||
SOCKET_V=3.1.0
|
||||
SOCKET_V=3.0.0
|
||||
MIME_V=1.0.3
|
||||
SOCKET_SO=socket-$(SOCKET_V).$(SO)
|
||||
MIME_SO=mime-$(MIME_V).$(SO)
|
||||
|
@ -12,7 +12,7 @@
|
||||
#define PIE_CONNREFUSED "connection refused"
|
||||
#define PIE_CONNABORTED "closed"
|
||||
#define PIE_CONNRESET "closed"
|
||||
#define PIE_TIMEDOUT "timeout"
|
||||
#define PIE_TIMEDOUT "connection timeout"
|
||||
#define PIE_AGAIN "temporary failure in name resolution"
|
||||
#define PIE_BADFLAGS "invalid value for ai_flags"
|
||||
#define PIE_BADHINTS "invalid value for hints"
|
||||
|
@ -152,7 +152,7 @@ function _M.parse(url, default)
|
||||
url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
|
||||
function(s) parsed.scheme = s; return "" end)
|
||||
-- get authority
|
||||
url = string.gsub(url, "^//([^/%?#]*)", function(n)
|
||||
url = string.gsub(url, "^//([^/]*)", function(n)
|
||||
parsed.authority = n
|
||||
return ""
|
||||
end)
|
||||
|
@ -127,19 +127,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
|
||||
if (connect(*ps, addr, len) == 0) return IO_DONE;
|
||||
/* make sure the system is trying to connect */
|
||||
err = WSAGetLastError();
|
||||
|
||||
if (err == WSAEISCONN) return IO_DONE; // already connected?
|
||||
|
||||
// hotfix for nonblocking, slow TCP connections not returning instantly
|
||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx
|
||||
// "Note In order to preserve backward compatibility, this error is reported as WSAEINVAL to Windows Sockets 1.1 applications that link to either Winsock.dll or Wsock32.dll."
|
||||
// The only other valid reason to get WSAINVAL is that: The parameter s is a listening socket. So we hope that doesn't happen here.
|
||||
if (err == WSAEINVAL) {
|
||||
return WSAEALREADY;
|
||||
}
|
||||
|
||||
if (err != WSAEWOULDBLOCK && err != WSAEINPROGRESS) return err;
|
||||
|
||||
/* zero timeout case optimization */
|
||||
if (timeout_iszero(tm)) return IO_TIMEOUT;
|
||||
/* we wait until something happens */
|
||||
@ -274,7 +262,6 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
|
||||
if (err != WSAEWOULDBLOCK) {
|
||||
if (err != WSAECONNRESET || prev == WSAECONNRESET) return err;
|
||||
prev = err;
|
||||
continue;
|
||||
}
|
||||
if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
|
||||
}
|
||||
@ -304,7 +291,6 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
|
||||
if (err != WSAEWOULDBLOCK) {
|
||||
if (err != WSAECONNRESET || prev == WSAECONNRESET) return err;
|
||||
prev = err;
|
||||
continue;
|
||||
}
|
||||
if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
|
||||
}
|
||||
|
Reference in New Issue
Block a user