mirror of
https://github.com/lunarmodules/luasocket.git
synced 2025-07-17 06:19:53 +02:00
Compare commits
3 Commits
hjelmeland
...
ef139fe081
Author | SHA1 | Date | |
---|---|---|---|
ef139fe081 | |||
b0470f4a0e | |||
c27c23074c |
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@ -8,19 +8,19 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Test ${{ matrix.luaVersion }} on ${{ matrix.platform }}
|
name: Test build on ${{ matrix.platform }}
|
||||||
strategy:
|
strategy:
|
||||||
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-22.04", "macos-11", "windows-2022" ]
|
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@v4
|
uses: actions/checkout@v3
|
||||||
- name: Setup ’msvc’
|
- name: Setup ’msvc’
|
||||||
if: ${{ startsWith(matrix.platform, 'windows') && !startsWith(matrix.luaVersion, 'luajit') }}
|
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
if: ${{ !startsWith(matrix.luaVersion, 'luajit') }}
|
||||||
- name: Setup ‘lua’
|
- name: Setup ‘lua’
|
||||||
uses: leso-kn/gh-actions-lua@v11-staging
|
uses: leso-kn/gh-actions-lua@v11-staging
|
||||||
with:
|
with:
|
||||||
|
6
.github/workflows/luacheck.yml
vendored
6
.github/workflows/luacheck.yml
vendored
@ -5,9 +5,9 @@ on: [push, pull_request]
|
|||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
luacheck:
|
luacheck:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v3
|
||||||
- name: Luacheck
|
- name: Luacheck
|
||||||
uses: lunarmodules/luacheck@v1
|
uses: lunarmodules/luacheck@v0
|
||||||
|
25
src/buffer.c
25
src/buffer.c
@ -9,7 +9,7 @@
|
|||||||
* Internal function prototypes
|
* Internal function prototypes
|
||||||
\*=========================================================================*/
|
\*=========================================================================*/
|
||||||
static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b);
|
static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b);
|
||||||
static int recvline(p_buffer buf, luaL_Buffer *b);
|
static int recvline(p_buffer buf, luaL_Buffer *b, int chop);
|
||||||
static int recvall(p_buffer buf, luaL_Buffer *b);
|
static int recvall(p_buffer buf, luaL_Buffer *b);
|
||||||
static int buffer_get(p_buffer buf, const char **data, size_t *count);
|
static int buffer_get(p_buffer buf, const char **data, size_t *count);
|
||||||
static void buffer_skip(p_buffer buf, size_t count);
|
static void buffer_skip(p_buffer buf, size_t count);
|
||||||
@ -117,10 +117,21 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
|
|||||||
luaL_addlstring(&b, part, size);
|
luaL_addlstring(&b, part, size);
|
||||||
/* receive new patterns */
|
/* receive new patterns */
|
||||||
if (!lua_isnumber(L, 2)) {
|
if (!lua_isnumber(L, 2)) {
|
||||||
const char *p= luaL_optstring(L, 2, "*l");
|
const char *p = luaL_optstring(L, 2, "l");
|
||||||
if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b);
|
if (*p == '*') p++; /* skip optional '*' (for compatibility) */
|
||||||
else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
|
switch (*p) {
|
||||||
else luaL_argcheck(L, 0, 2, "invalid receive pattern");
|
case 'l': /* line */
|
||||||
|
err = recvline(buf, &b, 1);
|
||||||
|
break;
|
||||||
|
case 'L': /* line with \n */
|
||||||
|
err = recvline(buf, &b, 0);
|
||||||
|
break;
|
||||||
|
case 'a': /* all */
|
||||||
|
err = recvall(buf, &b);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
luaL_argcheck(L, 0, 2, "invalid receive pattern");
|
||||||
|
}
|
||||||
/* get a fixed number of bytes (minus what was already partially
|
/* get a fixed number of bytes (minus what was already partially
|
||||||
* received) */
|
* received) */
|
||||||
} else {
|
} else {
|
||||||
@ -222,7 +233,7 @@ static int recvall(p_buffer buf, luaL_Buffer *b) {
|
|||||||
* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
|
* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
|
||||||
* are not returned by the function and are discarded from the buffer
|
* are not returned by the function and are discarded from the buffer
|
||||||
\*-------------------------------------------------------------------------*/
|
\*-------------------------------------------------------------------------*/
|
||||||
static int recvline(p_buffer buf, luaL_Buffer *b) {
|
static int recvline(p_buffer buf, luaL_Buffer *b, int chop) {
|
||||||
int err = IO_DONE;
|
int err = IO_DONE;
|
||||||
while (err == IO_DONE) {
|
while (err == IO_DONE) {
|
||||||
size_t count, pos; const char *data;
|
size_t count, pos; const char *data;
|
||||||
@ -234,6 +245,8 @@ static int recvline(p_buffer buf, luaL_Buffer *b) {
|
|||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
if (pos < count) { /* found '\n' */
|
if (pos < count) { /* found '\n' */
|
||||||
|
if (!chop)
|
||||||
|
luaL_addchar(b, '\n');
|
||||||
buffer_skip(buf, pos+1); /* skip '\n' too */
|
buffer_skip(buf, pos+1); /* skip '\n' too */
|
||||||
break; /* we are done */
|
break; /* we are done */
|
||||||
} else /* reached the end of the buffer */
|
} else /* reached the end of the buffer */
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#define PIE_CONNREFUSED "connection refused"
|
#define PIE_CONNREFUSED "connection refused"
|
||||||
#define PIE_CONNABORTED "closed"
|
#define PIE_CONNABORTED "closed"
|
||||||
#define PIE_CONNRESET "closed"
|
#define PIE_CONNRESET "closed"
|
||||||
#define PIE_TIMEDOUT "connection timeout"
|
#define PIE_TIMEDOUT "timeout"
|
||||||
#define PIE_AGAIN "temporary failure in name resolution"
|
#define PIE_AGAIN "temporary failure in name resolution"
|
||||||
#define PIE_BADFLAGS "invalid value for ai_flags"
|
#define PIE_BADFLAGS "invalid value for ai_flags"
|
||||||
#define PIE_BADHINTS "invalid value for hints"
|
#define PIE_BADHINTS "invalid value for hints"
|
||||||
|
Reference in New Issue
Block a user