whatever but it works now

i hate sockets
master
Drake 2 years ago
parent 7560e1077f
commit bfa82d9c31

@ -16,7 +16,7 @@ all: main
main: main:
@${CC} -o bin/httpsrv src/main.c ${CC_FLAGS} @${CC} -o bin/httpsrv src/main.c ${CC_FLAGS}
debug: CC_FLAGS:=-g -O0 -v -fsanitize=undefined -fsanitize=address ${CC_FLAGS} debug: CC_FLAGS:=-g -O0 -v ${CC_FLAGS}
debug: all debug: all
clean: clean:

Binary file not shown.

@ -3,6 +3,7 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#include <sys/socket.h>
#ifdef NO_GC #ifdef NO_GC
#include <gc.h> #include <gc.h>
#define malloc(n) GC_malloc(n) #define malloc(n) GC_malloc(n)
@ -18,7 +19,8 @@ typedef struct {
ReqHeader readReqHeader(int client) { ReqHeader readReqHeader(int client) {
char* buf = malloc(1024); char* buf = malloc(1024);
read(client, buf, 1024); //read(client, buf, 1024);
recv(client, buf, 1024, 0);
ReqHeader header; ReqHeader header;
if (buf == NULL || !strcmp(buf, "")) { if (buf == NULL || !strcmp(buf, "")) {
errno = -1; errno = -1;

@ -39,9 +39,7 @@ void segfault(int sig) {
#endif #endif
} }
void *handle(void* arg) { int handle(int client) {
int client = *(int*)arg;
ReqHeader request = readReqHeader(client); ReqHeader request = readReqHeader(client);
ResHeader rawHeader; ResHeader rawHeader;
if (errno == -1) { if (errno == -1) {
@ -95,6 +93,11 @@ int srv(char* ADDR, int PORT) {
srvAddr.sin_port = htons(PORT); srvAddr.sin_port = htons(PORT);
srvAddr.sin_addr.s_addr = inet_addr(ADDR); srvAddr.sin_addr.s_addr = inet_addr(ADDR);
int opt = 1;
setsockopt(srvSocket, SOL_SOCKET, SO_REUSEADDR, (void *)opt, sizeof(int));
opt = 0;
setsockopt(srvSocket, SOL_SOCKET, SO_LINGER, (void *)opt, sizeof(int));
if (bind( if (bind(
srvSocket, srvSocket,
(struct sockaddr*) &srvAddr, (struct sockaddr*) &srvAddr,
@ -116,6 +119,6 @@ int srv(char* ADDR, int PORT) {
while(1) { while(1) {
int client = accept(srvSocket, NULL, NULL); int client = accept(srvSocket, NULL, NULL);
handle(&client); handle(client);
} }
} }

Loading…
Cancel
Save