diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | makefile | 3 | ||||
| -rw-r--r-- | readme.md | 4 | ||||
| -rw-r--r-- | src/lua.c | 8 | ||||
| -rw-r--r-- | src/net.c | 27 | ||||
| -rw-r--r-- | src/types/parray.h | 3 | ||||
| -rw-r--r-- | tests/net.lua | 2 |
7 files changed, 24 insertions, 24 deletions
@@ -8,6 +8,7 @@ a.out test
test2
*.py
+*.sh
vgcore.*
@@ -15,6 +15,9 @@ endif all: $(TARGET)
+debug: CFLAGS += -g
+debug: all
+
%.o: %.c
$(CC) -c $< -o $@ $(CFLAGS)
@@ -14,7 +14,7 @@ todo: * <res>:serve()
- * ~~check memory saftey~~ (*should* be good)
+ * ~~check memory saftey~~ (*should* be good) (now work on indirect & more lifetime stuff)
* memory optimizations (its getting there)
@@ -26,6 +26,8 @@ todo: * allow choosing what to copy over to the thread, or not to copy the global state at all
+ * allow stopping the server
+
* more doxygen like docs, everywhere
* thread-safe wrapper object
@@ -74,11 +74,13 @@ void i_dcopy(lua_State* src, lua_State* dest, void* _seen){ return;
}
+ int *sp = malloc(sizeof * sp);
+
//lua_pushinteger(dest, 55);
int r = luaL_ref(dest, LUA_REGISTRYINDEX);
lua_rawgeti(dest, LUA_REGISTRYINDEX, r);
- //*sp = r;
- parray_set(seen, aauwu, (void*)&r);
+ *sp = r;
+ parray_set(seen, aauwu, sp);
//printf("saved %i\n", *sp);
//for(int i = 0; i != seen->len; i++){
@@ -126,7 +128,7 @@ void i_dcopy(lua_State* src, lua_State* dest, void* _seen){ lua_pushnil(dest);
break;
}
- if(wnull) parray_clear(seen, NONE);
+ if(wnull) parray_clear(seen, FREE);
//lua_settop(src, old_top);
_seen = seen;
}
@@ -714,7 +714,7 @@ int l_sendfile(lua_State* L){ str* r;
i_write_header(L, header, &r, "", 0);
send(client_fd, r->c, r->len, 0);
- free(r);
+ str_free(r);
char* buffer = calloc(sizeof* buffer, bsize + 1);
FILE* fp = fopen(path, "rb");
@@ -819,7 +819,7 @@ void* handle_client(void *_arg){ int res_idx = lua_gettop(L);
//handle cookies
- if(sC != NULL){
+ if(0 && sC != NULL){
lua_newtable(L);
int lcookie = lua_gettop(L);
@@ -893,7 +893,6 @@ void* handle_client(void *_arg){ //the function(s)
//get all function that kinda match
parray_t* owo = (parray_t*)v;
- uint64_t passes = 0;
for(int i = 0; i != owo->len; i++){
//though these are arrays of arrays we have to iterate *again*
struct sarray_t* awa = (struct sarray_t*)owo->P[i].value;
@@ -903,8 +902,6 @@ void* handle_client(void *_arg){ struct lchar* wowa = awa->cs[z];
if(strcmp(wowa->req, "all") == 0 || strcmp(wowa->req, sR->c) == 0 ||
(strcmp(sR->c, "HEAD") && strcmp(wowa->req, "GET"))){
- luaI_tseti(L, res_idx, "passes", passes);
- passes++;
luaL_loadbuffer(L, wowa->c, wowa->len, "fun");
@@ -1038,15 +1035,12 @@ int l_req_com(lua_State* L, char* req){ str* uwu = str_init("");
lua_pushvalue(L, 3);
lua_dump(L, writer, (void*)uwu, 0);
- lua_pushlstring(L, uwu->c, uwu->len);
- str_free(uwu);
-
- size_t len;
- char* a = (char*)luaL_checklstring(L, -1, &len);
- awa = malloc(len + 1);
- awa->c = a;
- awa->len = len;
+
+ awa = malloc(sizeof * awa);
+ awa->c = uwu->c;
+ awa->len = uwu->len;
strcpy(awa->req, req);
+ free(uwu); //yes this *should* be str_free but awa kinda owns it now:p
if(paths == NULL)
paths = parray_init();
@@ -1057,11 +1051,11 @@ int l_req_com(lua_State* L, char* req){ if(v_old_paths == NULL){
old_paths = malloc(sizeof * old_paths);
old_paths->len = 0;
- old_paths->cs = malloc(sizeof * old_paths->cs);
+ old_paths->cs = malloc(sizeof old_paths->cs);
} else old_paths = (struct sarray_t*)v_old_paths;
old_paths->len++;
- old_paths->cs = realloc(old_paths->cs, sizeof * old_paths->cs * old_paths->len);
+ old_paths->cs = realloc(old_paths->cs, sizeof old_paths->cs * old_paths->len);
old_paths->cs[old_paths->len - 1] = awa;
parray_set(paths, portss->c, (void*)old_paths);
@@ -1096,9 +1090,6 @@ int l_unlock(lua_State* L){ }
int l_listen(lua_State* L){
- lua_State* src = luaL_newstate();
- lua_State* dest = luaL_newstate();
-
if(lua_gettop(L) != 2) {
p_fatal("not enough args");
diff --git a/src/types/parray.h b/src/types/parray.h index bedadbf..fb89689 100644 --- a/src/types/parray.h +++ b/src/types/parray.h @@ -18,6 +18,7 @@ enum free_type { parray_t* parray_init();
void parray_set(parray_t*, char*, void*);
+void parray_push(parray_t*, char*, void*);
void* parray_get(parray_t* , char*);
int parray_geti(parray_t* , char*);
void parray_remove(parray_t* p, char* key, enum free_type free);
@@ -26,4 +27,4 @@ void parray_lclear(parray_t*); parray_t* parray_find(parray_t*, char*);
void free_method(void*, enum free_type);
-#endif //parray_h
\ No newline at end of file +#endif //parray_h
diff --git a/tests/net.lua b/tests/net.lua index b3a2b1f..228a29b 100644 --- a/tests/net.lua +++ b/tests/net.lua @@ -62,7 +62,7 @@ llib.net.listen( server:GET("/aa", function(res, req)
res.header["Content-Type"] = "text/plain"
- res:sendfile("llib.dll")
+ res:sendfile("readme.md")
end)
server:GET("/test55", function(res, req)
|
