aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net.c7
-rw-r--r--tests/units/net-query.lua25
2 files changed, 29 insertions, 3 deletions
diff --git a/src/net.c b/src/net.c
index 53a5ceb..ba7a134 100644
--- a/src/net.c
+++ b/src/net.c
@@ -565,6 +565,7 @@ int _request(lua_State* L, struct request_state* state){
char* request = calloc(cont_len + header->len + strlen(host) + strlen(path) + 512, sizeof * request);
sprintf(request, "%s %s HTTP/1.1\r\nHost: %s\r\nConnection: Close%s\r\n\r\n%s", action, path, host, header->c, cont);
+
str_free(header);
int s = _request_write(state, request, strlen(request));
@@ -597,7 +598,7 @@ int _request(lua_State* L, struct request_state* state){
parray_t* owo = NULL;
//handle errors
- int err = parse_header(a->c, header_eof - a->c, &owo);
+ int err = parse_header(a->c, header_eof - a->c + 2, &owo);
assert(err == 0);
for(int i = 0; i != owo->len; i++){
@@ -669,7 +670,7 @@ void path_parse(struct net_path_t* path, str* raw){
str** reading = &path->path;
- for(int i = 0; i <= raw->len; i++){
+ for(int i = 0; i <= raw->len - 1; i++){
if(raw->len - i > 1){
switch(raw->c[i]){
case '&':
@@ -720,7 +721,7 @@ void* handle_client(void *_arg){
parray_t* table;
//checks for a valid header
- int val = parse_header(buffer, header_eof, &table);
+ int val = parse_header(buffer, header_eof + 2, &table);
if(val == -2) net_error(client_fd, 414);
diff --git a/tests/units/net-query.lua b/tests/units/net-query.lua
new file mode 100644
index 0000000..4115172
--- /dev/null
+++ b/tests/units/net-query.lua
@@ -0,0 +1,25 @@
+PORT = 5552
+local a = 255
+local b = 992
+
+local net = llby.thread.async(function(tres)
+ local c = 943
+ llby.net.listen(function(server)
+ server:GET("/", function(res, req)
+ res:send(tostring(tonumber(req.query.t1) * a + tonumber(req.query.t2) * b + tonumber(req.query.t3) * c))
+ end)
+ end, PORT)
+end)
+
+local t1 = 293
+local t2 = 928
+local t3 = 777
+
+--should wait for the server to start
+os.execute("sleep 0.1")
+
+local s = llby.net.request(string.format("localhost:%i/?t1=%i&t2=%i&t3=%i", PORT, t1, t2, t3))
+local num = s.content:read()
+
+net:close()
+return tonumber(num) == (t1 * a + t2 * b + t3 * 943)