aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rwxr-xr-xsrc/main.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/main.c b/src/main.c
index 8ebc69a..eb9569e 100755
--- a/src/main.c
+++ b/src/main.c
@@ -1,5 +1,5 @@
-#include <launch-socket.h>
#include <Server.h>
+#include <launch-socket.h>
#include <pthread.h>
#include <signal.h>
#include <stdio.h>
@@ -7,7 +7,7 @@
#include <unistd.h>
// dont use stdio in these
-sig_atomic_t running = 1;
+volatile sig_atomic_t running = 1;
void sig_int_handler(int num)
{
running = 0;
@@ -17,14 +17,7 @@ void on_message(struct Server* server, char message[], ssize_t amountRecv, int s
{
if (amountRecv > 0) {
printf("%s\n", message);
-
- struct AcceptedSocket* sel_socket = server->accepted_socket;
- while (sel_socket != NULL) {
- if (sel_socket->socketFD != socketFD) {
- send(sel_socket->socketFD, message, 30000, 0);
- }
- sel_socket = sel_socket->next;
- }
+ broadcast(server,socketFD,message); //this calls mutex lock and unlock on server->list_lock
}
}
@@ -40,18 +33,20 @@ int main(int argc, char* argv[])
exit(-1);
}
- struct Server server = server_constructor(AF_INET, SOCK_STREAM, 0, INADDR_ANY, port, 10, launch_socket);
+ struct Server server = server_constructor(AF_INET, SOCK_STREAM, 0, INADDR_ANY, port, 10);
server.on_message = on_message;
- pthread_t server_thread = server.launch(&server);
+ launch_socket(&server);
struct sigaction act = { 0 };
act.sa_handler = &sig_int_handler;
sigaction(SIGINT, &act, NULL);
- while (running) { }
+ while (running) {
+ pause();
+ }
- server_close_socket(&server);
- pthread_join(server_thread, NULL);
+ int shut_err = server_close_socket(&server);
+ printf("shutdown with %d\n", shut_err);
return 0;
-}
+} \ No newline at end of file