From 5a937413af8e1ede18a237d72dd39884696f4d29 Mon Sep 17 00:00:00 2001 From: Brando Date: Mon, 21 Apr 2025 15:29:23 -0700 Subject: [PATCH 1/6] signal calls --- src/main.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3d65080..b2be79d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,12 +10,14 @@ #include #include #include +#include extern "C" { #include } #define ARGUMENT_ROOT "-root" +#define ARGUMENT_PORT "-port" using namespace BF::Net; using namespace BF; @@ -23,6 +25,8 @@ using namespace std; LOG_INIT; +Atomic _running; + void help(const char * toolname) { printf("usage: %s %s \n", toolname, ARGUMENT_ROOT); printf("\n"); @@ -52,6 +56,10 @@ int __ReadArguments(int argc, char * argv[]) { return 0; } +void __HandleSignal(int signum) { + _running = false; +} + int main(int argc, char * argv[]) { LOG_OPEN; @@ -70,15 +78,15 @@ int main(int argc, char * argv[]) { skt->setBufferSize(1024 * 1024 * 100); error = skt->start(); } - - if (!error) { - cout << "Press any key to stop..."; - cin.get(); - error = skt->stop(); - cout << "Stopped..." << endl; - } + signal(SIGINT, __HandleSignal); // For Ctrl+C + signal(SIGTERM, __HandleSignal); // For 'kill' command + signal(SIGHUP, __HandleSignal); // For terminal hangup + _running = error == 0; + while (!error && _running.get()) { } + + skt->stop(); BFRelease(skt); Office::stop(); From ba9ffcfc5eef34a901ecf36fe33d98a45ca3c7f0 Mon Sep 17 00:00:00 2001 From: Brando Date: Mon, 21 Apr 2025 15:34:40 -0700 Subject: [PATCH 2/6] reading port --- src/main.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b2be79d..8d7cd68 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,7 @@ #include #include #include +#include extern "C" { #include @@ -26,6 +27,7 @@ using namespace std; LOG_INIT; Atomic _running; +uint16_t _port = 8080; void help(const char * toolname) { printf("usage: %s %s \n", toolname, ARGUMENT_ROOT); @@ -47,9 +49,13 @@ int __ReadArguments(int argc, char * argv[]) { for (int i = 0; i < argc; i++) { if (!strcmp(argv[i], ARGUMENT_ROOT)) { - if (!Resource::setRootFolder(argv[++i])) { + if (++i < argc && !Resource::setRootFolder(argv[i])) { LOG_ERROR("'%s' is not accepted as a root folder", argv[i]); } + } else if (!strcmp(argv[i], ARGUMENT_PORT)) { + if (++i < argc) { + _port = atoi(argv[i]); + } } } @@ -71,7 +77,7 @@ int main(int argc, char * argv[]) { Log::SetCallback(__LogCallbackBFNet); Office::start(); - Socket * skt = Socket::create(SOCKET_MODE_SERVER, "0.0.0.0", 8080, &error); + Socket * skt = Socket::create(SOCKET_MODE_SERVER, "0.0.0.0", _port, &error); if (!error) { skt->setInStreamCallback(Office::envelopeReceive); skt->setNewConnectionCallback(__NewConnection); From 02f05572a188fa68ff54a99c4384adc08a3daf86 Mon Sep 17 00:00:00 2001 From: Brando Date: Mon, 21 Apr 2025 16:12:53 -0700 Subject: [PATCH 3/6] viewing logs --- src/log.hpp | 2 +- src/main.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/log.hpp b/src/log.hpp index 29a68d3..73926aa 100644 --- a/src/log.hpp +++ b/src/log.hpp @@ -10,7 +10,7 @@ extern "C" { #include } -//#define ENABLE_LOG_CONSOLE_PRINT +#define ENABLE_LOG_CONSOLE_PRINT #define CHAT_LOG_PATH "/tmp/http.log" diff --git a/src/main.cpp b/src/main.cpp index 8d7cd68..d5e4b5f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -77,7 +77,10 @@ int main(int argc, char * argv[]) { Log::SetCallback(__LogCallbackBFNet); Office::start(); - Socket * skt = Socket::create(SOCKET_MODE_SERVER, "0.0.0.0", _port, &error); + + const char * ipaddr = "0.0.0.0"; + LOG_WRITE("creating socket at %s:%u", ipaddr, _port); + Socket * skt = Socket::create(SOCKET_MODE_SERVER, ipaddr, _port, &error); if (!error) { skt->setInStreamCallback(Office::envelopeReceive); skt->setNewConnectionCallback(__NewConnection); From d896c3df749bf2df345b722a1e5bb833c3d83523 Mon Sep 17 00:00:00 2001 From: Brando Date: Mon, 21 Apr 2025 21:54:15 -0700 Subject: [PATCH 4/6] update log --- src/log.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/log.hpp b/src/log.hpp index 73926aa..29a68d3 100644 --- a/src/log.hpp +++ b/src/log.hpp @@ -10,7 +10,7 @@ extern "C" { #include } -#define ENABLE_LOG_CONSOLE_PRINT +//#define ENABLE_LOG_CONSOLE_PRINT #define CHAT_LOG_PATH "/tmp/http.log" From d02bd31e34f6d0d3706011bb4b64d6ab9e763dbe Mon Sep 17 00:00:00 2001 From: Brandon Fong <55638760+BrandonMFong@users.noreply.github.com> Date: Mon, 21 Apr 2025 21:55:46 -0700 Subject: [PATCH 5/6] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index cef1d96..8fe60f2 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,4 @@ +[![CI](https://github.com/BrandonMFong/http/actions/workflows/test.yml/badge.svg)](https://github.com/BrandonMFong/http/actions/workflows/test.yml) # http An http server using POSIX sockets ![Demo](./docs/demo.gif) From c5288d3ca118ff1ea53ec9be1c3899fa00b99d9c Mon Sep 17 00:00:00 2001 From: Brando Date: Mon, 21 Apr 2025 23:22:42 -0700 Subject: [PATCH 6/6] updating libs --- external/libs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/libs b/external/libs index c18dba4..97aaf42 160000 --- a/external/libs +++ b/external/libs @@ -1 +1 @@ -Subproject commit c18dba4e0772812732fac380fffcbb9598d410e9 +Subproject commit 97aaf422283ee123e5554863c304541cf82127fd