whatever but it works now

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

@ -16,7 +16,7 @@ all: main
main:
@${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
clean:

Binary file not shown.

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

@ -39,9 +39,7 @@ void segfault(int sig) {
#endif
}
void *handle(void* arg) {
int client = *(int*)arg;
int handle(int client) {
ReqHeader request = readReqHeader(client);
ResHeader rawHeader;
if (errno == -1) {
@ -95,6 +93,11 @@ int srv(char* ADDR, int PORT) {
srvAddr.sin_port = htons(PORT);
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(
srvSocket,
(struct sockaddr*) &srvAddr,
@ -116,6 +119,6 @@ int srv(char* ADDR, int PORT) {
while(1) {
int client = accept(srvSocket, NULL, NULL);
handle(&client);
handle(client);
}
}

Loading…
Cancel
Save