14 Commits

Author SHA1 Message Date
6a8a3cce39 Merge 20920473dd into 98be8d9fc1 2024-02-19 03:05:01 -07:00
98be8d9fc1 chore(http): Correct typos in error message and code comments (#423) 2024-02-12 11:28:01 +03:00
fa69770e52 fix(http): Use the right protocol for proxies (#386) 2023-11-23 08:01:29 +03:00
13f2b3c663 fix(http): Correct receiveheaders() handling of folded values (#420) 2023-11-13 23:33:26 +03:00
453a5207ed style(docs): Trim trailing whitespace in HTML docs
Many editors remove these automatically anyway which makes opening and
editng the docs cause a bunch of noise. This is just to get the noise
out of the way in a style commit so it doesn't leak into other PRs
2023-11-11 08:07:38 +03:00
de359ea408 chore(core): Update version markers to last released version
Closes #401
2023-11-11 00:48:02 +03:00
c93f9154e1 feat(rockspec): Ship mbox parser with LuaRocks, already packaged in some distros
Closes #324
2023-11-11 00:44:22 +03:00
8a5368b659 Merge pull request #418 from alerque/url-empty-path 2023-11-09 14:11:33 +03:00
22b8202d70 fix(wsocket): Properly report CONNRESET (#81) 2023-11-09 14:00:09 +03:00
3a817a56eb fix(url): Avoid fragment being part of authority, allows parsing empty paths 2023-11-08 23:27:58 +03:00
7eaf648056 fix(url): Avoid query string being part of authority, allows parsing empty paths 2023-11-08 14:50:43 +03:00
bef62aeb50 fix(inet): Return port as number in getsockname (#392) 2023-11-08 14:29:06 +03:00
20920473dd Update compiler flags options 2021-11-03 09:08:49 +08:00
be6399cb9d Update cmake build tools 2021-11-03 08:57:41 +08:00
14 changed files with 174 additions and 99 deletions

67
CMakeLists.txt Normal file
View File

@ -0,0 +1,67 @@
project(luasocket)
cmake_minimum_required(VERSION 2.8...3.20)
include(CheckIncludeFile)
check_include_file("lua.h" HAVE_LUA)
set(socket_VERSION "3.0-rc1")
set(MIME_VERSION "1.0.3")
include_directories(BEFORE "${PROJECT_SOURCE_DIR}/src/")
# add header files directory
# include_directories()
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ot /MD /W3 /nologo")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wshadow -Wextra -Wimplicit -O2 -ggdb3 -fpic")
endif()
if(WIN32)
if(${HAVE_LUA})
set(
SOURCE
"src/auxiliar.c"
"src/buffer.c"
"src/except.c"
"src/inet.c"
"src/io.c"
"src/options.c"
"src/select.c"
"src/tcp.c"
"src/udp.c"
"src/wsocket.c"
)
else()
message(FATAL_ERROR "can not found lua.h or lualib.h \n Maybe you can set \"include_directories(xxx/include)\"to solve this problem")
endif()
add_library(socket SHARED "${SOURCE}")
add_library(mime SHARED "src/mime.c" "src/compat.c")
set_target_properties(socket PROPERTIES OUTPUT_NAME "socket")
set_target_properties(mime PROPERTIES OUTPUT_NAME "mime")
elseif(APPLE)
# MACOS build
elseif(UNIX)
# Linux or Unix build
endif()
set(
TO_SOCKET_LDIR
"src/http.lua"
"src/url.lua"
"src/tp.lua"
"src/ftp.lua"
"src/headers.lua"
"src/smtp.lua"
)
set(
TO_TOP_LDIR
"src/ltn12.lua"
"src/socket.lua"
"src/mime.lua"
)
install(TARGETS socket LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/luasocket/socket")
install(FILES ${TO_SOCKET_LDIR} DESTINATION "${CMAKE_INSTALL_PREFIX}/luasocket/socket")
install(FILES ${TO_TOP_LDIR} DESTINATION "${CMAKE_INSTALL_PREFIX}/luasocket")

View File

@ -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.0.0
--> LuaSocket 3.1.0
</pre>
<p> Each module loads their dependencies automatically, so you only need to

View File

@ -69,6 +69,7 @@ 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"

View File

@ -1,7 +1,7 @@
#--------------------------------------------------------------------------
# Distribution makefile
#--------------------------------------------------------------------------
DIST = luasocket-3.0.0
DIST = luasocket-3.1.0
TEST = \
test/README \

View File

@ -54,7 +54,7 @@ local function receiveheaders(sock, headers)
while line ~= "" do
-- get field-name and value
name, value = socket.skip(2, string.find(line, "^(.-):%s*(.*)"))
if not (name and value) then return nil, "malformed reponse headers" end
if not (name and value) then return nil, "malformed response headers" end
name = string.lower(name)
-- get next line (value might be folded)
line, err = sock:receive()
@ -62,7 +62,7 @@ local function receiveheaders(sock, headers)
-- unfold any folded values
while string.find(line, "^%s") do
value = value .. line
line = sock:receive()
line, err = sock:receive()
if err then return nil, err end
end
-- save pair in table
@ -81,7 +81,7 @@ socket.sourcet["http-chunked"] = function(sock, headers)
dirty = function() return sock:dirty() end
}, {
__call = function()
-- get chunk size, skip extention
-- get chunk size, skip extension
local line, err = sock:receive()
if err then return nil, err end
local size = base.tonumber(string.gsub(line, ";.*", ""), 16)
@ -219,9 +219,11 @@ local function adjustproxy(reqt)
local proxy = reqt.proxy or _M.PROXY
if proxy then
proxy = url.parse(proxy)
return proxy.host, proxy.port or 3128
proxy.port = proxy.port or 3128
proxy.create = SCHEMES[proxy.scheme].create(reqt)
return proxy.host, proxy.port, proxy.create
else
return reqt.host, reqt.port
return reqt.host, reqt.port, reqt.create
end
end
@ -279,7 +281,7 @@ local function adjustrequest(reqt)
if not (host and host ~= "") then
socket.try(nil, "invalid host '" .. base.tostring(nreqt.host) .. "'")
end
-- compute uri if user hasn't overriden
-- compute uri if user hasn't overridden
nreqt.uri = reqt.uri or adjusturi(nreqt)
-- adjust headers in request
nreqt.headers = adjustheaders(nreqt)
@ -291,7 +293,10 @@ local function adjustrequest(reqt)
end
-- ajust host and port if there is a proxy
nreqt.host, nreqt.port = adjustproxy(nreqt)
local proxy_create
nreqt.host, nreqt.port, proxy_create = adjustproxy(nreqt)
if not reqt.create then nreqt.create = proxy_create end
return nreqt
end

View File

@ -290,7 +290,7 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
return 2;
}
lua_pushstring(L, name);
lua_pushstring(L, port);
lua_pushinteger(L, (int) strtol(port, (char **) NULL, 10));
switch (family) {
case AF_INET: lua_pushliteral(L, "inet"); break;
case AF_INET6: lua_pushliteral(L, "inet6"); break;

View File

@ -10,7 +10,7 @@
/*-------------------------------------------------------------------------* \
* Current socket library version
\*-------------------------------------------------------------------------*/
#define LUASOCKET_VERSION "LuaSocket 3.0.0"
#define LUASOCKET_VERSION "LuaSocket 3.1.0"
#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2013 Diego Nehab"
/*-------------------------------------------------------------------------*\

View File

@ -1,6 +1,6 @@
# luasocket src/makefile
#
# Definitions in this section can be overriden on the command line or in the
# Definitions in this section can be overridden on the command line or in the
# environment.
#
# These are equivalent:
@ -272,7 +272,7 @@ SOCKET_win64=wsocket.obj
#
SO=$(SO_$(PLAT))
O=$(O_$(PLAT))
SOCKET_V=3.0.0
SOCKET_V=3.1.0
MIME_V=1.0.3
SOCKET_SO=socket-$(SOCKET_V).$(SO)
MIME_SO=mime-$(MIME_V).$(SO)

View File

@ -12,7 +12,7 @@
#define PIE_CONNREFUSED "connection refused"
#define PIE_CONNABORTED "closed"
#define PIE_CONNRESET "closed"
#define PIE_TIMEDOUT "connection timeout"
#define PIE_TIMEDOUT "timeout"
#define PIE_AGAIN "temporary failure in name resolution"
#define PIE_BADFLAGS "invalid value for ai_flags"
#define PIE_BADHINTS "invalid value for hints"

View File

@ -225,7 +225,7 @@ local function adjust_headers(mesgt)
lower["date"] = lower["date"] or
os.date("!%a, %d %b %Y %H:%M:%S ") .. (mesgt.zone or _M.ZONE)
lower["x-mailer"] = lower["x-mailer"] or socket._VERSION
-- this can't be overriden
-- this can't be overridden
lower["mime-version"] = "1.0"
return lower
end

View File

@ -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)

View File

@ -262,6 +262,7 @@ 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;
}
@ -291,6 +292,7 @@ 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;
}