mirror of
https://github.com/lunarmodules/luasocket.git
synced 2025-05-01 12:46:45 +02:00
Compare commits
8 Commits
d835c86a82
...
5659087884
Author | SHA1 | Date | |
---|---|---|---|
|
5659087884 | ||
|
0f37af645c | ||
|
9c6195ea62 | ||
|
708e50f8e6 | ||
|
0bc8c56043 | ||
|
f741a88b80 | ||
|
20920473dd | ||
|
be6399cb9d |
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
@ -13,22 +13,27 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
luaVersion: [ "5.4", "5.3", "5.2", "5.1", "luajit", "luajit-openresty" ]
|
luaVersion: [ "5.4", "5.3", "5.2", "5.1", "luajit", "luajit-openresty" ]
|
||||||
platform: [ "ubuntu-20.04", "macos-11" ] # "windows-2022" not supported by gh-actions-lua
|
platform: [ "ubuntu-20.04", "macos-11", "windows-2022" ]
|
||||||
runs-on: ${{ matrix.platform }}
|
runs-on: ${{ matrix.platform }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Setup ’msvc’
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
if: ${{ !startsWith(matrix.luaVersion, 'luajit') }}
|
||||||
- name: Setup ‘lua’
|
- name: Setup ‘lua’
|
||||||
uses: leafo/gh-actions-lua@v9
|
uses: leso-kn/gh-actions-lua@v11-staging
|
||||||
with:
|
with:
|
||||||
luaVersion: ${{ matrix.luaVersion }}
|
luaVersion: ${{ matrix.luaVersion }}
|
||||||
- name: Setup ‘luarocks’
|
- name: Setup ‘luarocks’
|
||||||
uses: leafo/gh-actions-luarocks@v4
|
uses: hishamhm/gh-actions-luarocks@master
|
||||||
- name: Make and install
|
- name: Make and install
|
||||||
run: |
|
run: |
|
||||||
export DEBUG=DEBUG
|
|
||||||
luarocks make -- luasocket-scm-3.rockspec
|
luarocks make -- luasocket-scm-3.rockspec
|
||||||
|
env:
|
||||||
|
DEBUG: DEBUG
|
||||||
- name: Run regression tests
|
- name: Run regression tests
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cd test
|
cd test
|
||||||
lua hello.lua
|
lua hello.lua
|
||||||
|
67
CMakeLists.txt
Normal file
67
CMakeLists.txt
Normal 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")
|
@ -54,6 +54,33 @@ int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
|
|||||||
return opt->func(L, ps);
|
return opt->func(L, ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------*/
|
||||||
|
/* binds socket to network interface */
|
||||||
|
int opt_set_bindtodevice(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
#ifndef SO_BINDTODEVICE
|
||||||
|
return luaL_error(L, "SO_BINDTODEVICE is not supported on this operating system");
|
||||||
|
#else
|
||||||
|
const char *dev = luaL_checkstring(L, 3);
|
||||||
|
return opt_set(L, ps, SOL_SOCKET, SO_BINDTODEVICE, (char*)dev, strlen(dev)+1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int opt_get_bindtodevice(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
#ifndef SO_BINDTODEVICE
|
||||||
|
return luaL_error(L, "SO_BINDTODEVICE is not supported on this operating system");
|
||||||
|
#else
|
||||||
|
char dev[IFNAMSIZ];
|
||||||
|
int len = sizeof(dev);
|
||||||
|
int err = opt_get(L, ps, SOL_SOCKET, SO_BINDTODEVICE, &dev, &len);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
lua_pushstring(L, dev);
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------*/
|
/*------------------------------------------------------*/
|
||||||
/* enables reuse of local address */
|
/* enables reuse of local address */
|
||||||
int opt_set_reuseaddr(lua_State *L, p_socket ps)
|
int opt_set_reuseaddr(lua_State *L, p_socket ps)
|
||||||
|
@ -53,6 +53,9 @@ int opt_get_tcp_keepintvl(lua_State *L, p_socket ps);
|
|||||||
int opt_set_tcp_defer_accept(lua_State *L, p_socket ps);
|
int opt_set_tcp_defer_accept(lua_State *L, p_socket ps);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int opt_set_bindtodevice(lua_State *L, p_socket ps);
|
||||||
|
int opt_get_bindtodevice(lua_State *L, p_socket ps);
|
||||||
|
|
||||||
int opt_set_keepalive(lua_State *L, p_socket ps);
|
int opt_set_keepalive(lua_State *L, p_socket ps);
|
||||||
int opt_get_keepalive(lua_State *L, p_socket ps);
|
int opt_get_keepalive(lua_State *L, p_socket ps);
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ static luaL_Reg tcp_methods[] = {
|
|||||||
|
|
||||||
/* socket option handlers */
|
/* socket option handlers */
|
||||||
static t_opt optget[] = {
|
static t_opt optget[] = {
|
||||||
|
{"bindtodevice", opt_get_bindtodevice},
|
||||||
{"keepalive", opt_get_keepalive},
|
{"keepalive", opt_get_keepalive},
|
||||||
{"reuseaddr", opt_get_reuseaddr},
|
{"reuseaddr", opt_get_reuseaddr},
|
||||||
{"reuseport", opt_get_reuseport},
|
{"reuseport", opt_get_reuseport},
|
||||||
@ -92,6 +93,7 @@ static t_opt optget[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static t_opt optset[] = {
|
static t_opt optset[] = {
|
||||||
|
{"bindtodevice", opt_set_bindtodevice},
|
||||||
{"keepalive", opt_set_keepalive},
|
{"keepalive", opt_set_keepalive},
|
||||||
{"reuseaddr", opt_set_reuseaddr},
|
{"reuseaddr", opt_set_reuseaddr},
|
||||||
{"reuseport", opt_set_reuseport},
|
{"reuseport", opt_set_reuseport},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user