From ca343ae1d864522f79829f4ba2fccc5ec5f7c0c2 Mon Sep 17 00:00:00 2001 From: David Guillen Fandos Date: Tue, 31 Jul 2018 22:08:38 +0200 Subject: [PATCH 1/2] Fix small issues in tests and added some extra checks. --- test/Makefile | 10 +++++----- test/test.cc | 6 +++--- test/test.conf | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 test/test.conf diff --git a/test/Makefile b/test/Makefile index b30859a..2034063 100644 --- a/test/Makefile +++ b/test/Makefile @@ -2,19 +2,19 @@ CC = clang++ #CC = g++ -CFLAGS = -O0 -std=c++11 -DGTEST_USE_OWN_TR1_TUPLE -I.. -I. -Wall -Wextra +CFLAGS = -ggdb -O0 -std=c++11 -DGTEST_USE_OWN_TR1_TUPLE -I.. -I. -Wall -Wextra OPENSSL_SUPPORT = -DCPPHTTPLIB_OPENSSL_SUPPORT -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib -lssl -lcrypto ZLIB_SUPPORT = -DCPPHTTPLIB_ZLIB_SUPPORT -lz all : test ./test -test : test.cc ../httplib.h Makefile +test : test.cc ../httplib.h Makefile cert.pem $(CC) -o test $(CFLAGS) test.cc gtest/gtest-all.cc gtest/gtest_main.cc $(OPENSSL_SUPPORT) $(ZLIB_SUPPORT) -lpthread -pem: +cert.pem: openssl genrsa 2048 > key.pem - openssl req -new -key key.pem | openssl x509 -days 3650 -req -signkey key.pem > cert.pem + openssl req -new -batch -config test.conf -key key.pem | openssl x509 -days 3650 -req -signkey key.pem > cert.pem clean: - rm test *.pem + rm -f test *.pem diff --git a/test/test.cc b/test/test.cc index 3e85730..d4e6791 100644 --- a/test/test.cc +++ b/test/test.cc @@ -363,7 +363,7 @@ protected: persons_["john"] = "programmer"; t_ = thread([&](){ - svr_.listen(HOST, PORT); + ASSERT_TRUE(svr_.listen(HOST, PORT)); }); while (!svr_.is_running()) { @@ -890,7 +890,7 @@ protected: }); t_ = thread([&]() { - svr_.listen(nullptr, PORT, AI_PASSIVE); + ASSERT_TRUE(svr_.listen(nullptr, PORT, AI_PASSIVE)); }); while (!svr_.is_running()) { @@ -932,7 +932,7 @@ protected: t_ = thread([&](){ svr_.bind_to_any_port(HOST); msleep(500); - svr_.listen_after_bind(); + ASSERT_TRUE(svr_.listen_after_bind()); }); while (!svr_.is_running()) { diff --git a/test/test.conf b/test/test.conf new file mode 100644 index 0000000..b4ae121 --- /dev/null +++ b/test/test.conf @@ -0,0 +1,18 @@ +[req] +default_bits = 2048 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = mypass + +[req_distinguished_name] +C = US +ST = Test State or Province +L = Test Locality +O = Organization Name +OU = Organizational Unit Name +CN = Common Name +emailAddress = test@email.address + +[req_attributes] +challengePassword = 1234 From 07910f73a929186ff8daaa769e6dc3f4ea8ccb3e Mon Sep 17 00:00:00 2001 From: yhirose Date: Tue, 31 Jul 2018 19:46:04 -0400 Subject: [PATCH 2/2] Fixed problem that `listen` may return incorrect value when calling `stop`; --- httplib.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/httplib.h b/httplib.h index 2544c88..909d9ec 100644 --- a/httplib.h +++ b/httplib.h @@ -1516,9 +1516,10 @@ inline void Server::stop() { if (is_running_) { assert(svr_sock_ != INVALID_SOCKET); - detail::shutdown_socket(svr_sock_); - detail::close_socket(svr_sock_); + auto sock = svr_sock_; svr_sock_ = INVALID_SOCKET; + detail::shutdown_socket(sock); + detail::close_socket(sock); } }