3 Commits

Author SHA1 Message Date
db053121f2 Refactor Makefile 2022-11-10 20:42:24 +01:00
89a9d4b9d6 Fix chunked splicing 2022-11-10 20:21:25 +01:00
bc7c3591a2 Renamed docs/ to doc/ 2022-11-01 11:10:29 +01:00
6 changed files with 50 additions and 20 deletions

4
.gitignore vendored
View File

@@ -1,8 +1,8 @@
* *
!src !src
!src/** !src/**
!docs !doc
!docs/** !doc/**
!Makefile !Makefile
!.gitignore !.gitignore
!README.md !README.md

View File

@@ -37,35 +37,35 @@ bin/sesimos: bin/server.o bin/client.o
$(CC) -o $@ $^ $(CFLAGS) -Lbin -lsesimos -Wl,-rpath=$(shell pwd)/bin $(LIBS) $(CC) -o $@ $^ $(CFLAGS) -Lbin -lsesimos -Wl,-rpath=$(shell pwd)/bin $(LIBS)
bin/server.o: src/server.c src/server.h src/defs.h src/client.h src/lib/cache.h src/lib/config.h src/lib/sock.h \ bin/server.o: src/server.h src/defs.h src/client.h src/lib/cache.h src/lib/config.h src/lib/sock.h \
src/lib/rev_proxy.h src/lib/geoip.h src/lib/utils.h src/lib/rev_proxy.h src/lib/geoip.h src/lib/utils.h
bin/client.o: src/client.c src/client.h src/defs.h src/server.h src/lib/utils.h src/lib/config.h src/lib/sock.h \ bin/client.o: src/client.h src/defs.h src/server.h src/lib/utils.h src/lib/config.h src/lib/sock.h \
src/lib/http.h src/lib/rev_proxy.h src/lib/fastcgi.h src/lib/cache.h src/lib/geoip.h src/lib/compress.h \ src/lib/http.h src/lib/rev_proxy.h src/lib/fastcgi.h src/lib/cache.h src/lib/geoip.h src/lib/compress.h \
src/lib/websocket.h src/lib/websocket.h
bin/lib/cache.o: src/lib/cache.c src/lib/cache.h src/lib/utils.h src/lib/uri.h src/lib/compress.h bin/lib/cache.o: src/lib/cache.h src/lib/utils.h src/lib/uri.h src/lib/compress.h
bin/lib/compress.o: src/lib/compress.c src/lib/compress.h bin/lib/compress.o: src/lib/compress.h
bin/lib/config.o: src/lib/config.c src/lib/config.h src/lib/utils.h src/lib/uri.h bin/lib/config.o: src/lib/config.h src/lib/utils.h src/lib/uri.h
bin/lib/fastcgi.o: src/lib/fastcgi.c src/lib/fastcgi.h src/server.h src/lib/utils.h src/lib/compress.h src/lib/http.h \ bin/lib/fastcgi.o: src/lib/fastcgi.h src/server.h src/lib/utils.h src/lib/compress.h src/lib/http.h \
src/lib/uri.h src/lib/include/fastcgi.h src/lib/uri.h src/lib/include/fastcgi.h
bin/lib/geoip.o: src/lib/geoip.c src/lib/geoip.h bin/lib/geoip.o: src/lib/geoip.h
bin/lib/http.o: src/lib/http.c src/lib/http.h src/lib/utils.h src/lib/compress.h src/lib/sock.h bin/lib/http.o: src/lib/http.h src/lib/utils.h src/lib/compress.h src/lib/sock.h
bin/lib/rev_proxy.o: src/lib/rev_proxy.c src/lib/rev_proxy.h src/defs.h src/server.h src/lib/compress.h bin/lib/rev_proxy.o: src/lib/rev_proxy.h src/defs.h src/server.h src/lib/compress.h
bin/lib/sock.o: src/lib/sock.c src/lib/sock.h bin/lib/sock.o: src/lib/sock.h
bin/lib/uri.o: src/lib/uri.c src/lib/uri.h src/lib/utils.h bin/lib/uri.o: src/lib/uri.h src/lib/utils.h
bin/lib/utils.o: src/lib/utils.c src/lib/utils.h bin/lib/utils.o: src/lib/utils.h
bin/lib/websocket.o: src/lib/websocket.c src/lib/websocket.h src/defs.h src/lib/utils.h src/lib/sock.h bin/lib/websocket.o: src/lib/websocket.h src/defs.h src/lib/utils.h src/lib/sock.h
permit: permit:

View File

@@ -21,7 +21,7 @@ Sesimos Secure, simple, modern web server
## Configuration ## Configuration
See [docs/example.conf](docs/example.conf) for more details. See [doc/example.conf](doc/example.conf) for more details.
### Global directives ### Global directives

View File

@@ -628,9 +628,24 @@ int fastcgi_receive_chunked(fastcgi_conn *conn, sock *client) {
while (1) { while (1) {
ret = sock_recv(client, tmp, sizeof(tmp), MSG_PEEK); ret = sock_recv(client, tmp, sizeof(tmp), MSG_PEEK);
if (ret < 0) return -2; if (ret < 0) return -2;
else if (ret < 2) continue;
int len = 0;
for (int i = 0; i < ret; i++) {
char ch = tmp[i];
if (ch == '\r') {
continue;
} else if (ch == '\n') {
len = i + 1;
break;
} else if (!((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'))) {
return -2;
}
}
if (len == 0) continue;
next_len = strtol(tmp, NULL, 16); next_len = strtol(tmp, NULL, 16);
char *ptr = strstr(tmp, "\r\n"); ret = sock_recv(client, tmp, len, 0);
ret = sock_recv(client, tmp, ptr - tmp + 2, 0);
if (ret < 0) return -2; if (ret < 0) return -2;
if (next_len <= 0) break; if (next_len <= 0) break;

View File

@@ -112,9 +112,24 @@ long sock_splice_chunked(sock *dst, sock *src, void *buf, unsigned long buf_len)
while (1) { while (1) {
ret = sock_recv(src, tmp, sizeof(tmp), MSG_PEEK); ret = sock_recv(src, tmp, sizeof(tmp), MSG_PEEK);
if (ret < 0) return -2; if (ret < 0) return -2;
else if (ret < 2) continue;
int len = 0;
for (int i = 0; i < ret; i++) {
char ch = tmp[i];
if (ch == '\r') {
continue;
} else if (ch == '\n') {
len = i + 1;
break;
} else if (!((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'))) {
return -2;
}
}
if (len == 0) continue;
next_len = strtol(tmp, NULL, 16); next_len = strtol(tmp, NULL, 16);
char *ptr = strstr(tmp, "\r\n"); ret = sock_recv(src, tmp, len, 0);
ret = sock_recv(src, tmp, ptr - tmp + 2, 0);
if (ret < 0) return -2; if (ret < 0) return -2;
if (next_len <= 0) break; if (next_len <= 0) break;