From 56f6c65a1902e69908dc4d072721479377aa5522 Mon Sep 17 00:00:00 2001 From: Tristan Russell Date: Fri, 17 Jan 2025 20:41:49 -0500 Subject: [PATCH] feat: Worker tells Host to remove itself from active port list when done --- main.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index bae3479..30762a8 100644 --- a/main.c +++ b/main.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +27,32 @@ int SetupServer(int* socket_fd, int port) { return 0; } +int RemoveServer(int port) { + int socket_fd = socket(AF_INET, SOCK_STREAM, 0); + struct sockaddr_in server_addr; + server_addr.sin_family = AF_INET; + server_addr.sin_port = htons(1337); + server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + int connected = connect(socket_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)); + if(connected < 0) { + printf("Connect error: %s (%i)\n", strerror(errno), errno); + return -1; + } + + printf("Removing Server\n"); + char data[5]; + char flag = 0x1; + u_int32_t nport = htonl(port); + memcpy(data, &flag, sizeof(char)); + memcpy(data+1, &nport, sizeof(u_int32_t)); + int bytes_sent = send(socket_fd, data, sizeof(data), 0); + if(bytes_sent == -1) { + printf("Send error: %s (%i)\n", strerror(errno), errno); + return -1; + } + return 0; +} + int StartEnv(int port) { int socket_fd; int setup = SetupServer(&socket_fd, port); @@ -49,7 +76,6 @@ int StartEnv(int port) { bytes_received = recv(client_sock, buffer, sizeof(buffer), 0); if(bytes_received < 0) { printf("Receive Error: %s (%d)\n", strerror(errno), errno); - break; } else if(bytes_received == 0) { break; } @@ -79,6 +105,7 @@ int StartEnv(int port) { send(client_sock, data, obs_size, 0); } } + RemoveServer(port); shutdown(client_sock, SHUT_RDWR); close(client_sock); return 0;