mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Make libevent optional; move binaries into bin/
This commit is contained in:
parent
26e8f082c9
commit
b54d1e6309
3 changed files with 109 additions and 94 deletions
111
CMakeLists.txt
111
CMakeLists.txt
|
@ -234,100 +234,45 @@ ELSE()
|
|||
MESSAGE(STATUS "zlib not found")
|
||||
ENDIF()
|
||||
|
||||
IF (LSQUIC_BIN OR LSQUIC_TESTS)
|
||||
FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h)
|
||||
IF (EVENT_INCLUDE_DIR)
|
||||
INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIR})
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "event2/event.h was not found")
|
||||
ENDIF()
|
||||
IF (CMAKE_SYSTEM_NAME STREQUAL Windows)
|
||||
FIND_LIBRARY(EVENT_LIB event)
|
||||
ELSE()
|
||||
FIND_LIBRARY(EVENT_LIB libevent${LIB_SUFFIX})
|
||||
IF(NOT EVENT_LIB)
|
||||
FIND_LIBRARY(EVENT_LIB libevent.so)
|
||||
SET(LIBS lsquic ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS})
|
||||
|
||||
IF (LSQUIC_BIN)
|
||||
FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h)
|
||||
IF (EVENT_INCLUDE_DIR)
|
||||
INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIR})
|
||||
ELSE()
|
||||
MESSAGE(WARNING "event2/event.h was not found: binaries won't be built")
|
||||
SET(LSQUIC_BIN OFF)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(EVENT_LIB)
|
||||
MESSAGE(STATUS "Found event: ${EVENT_LIB}")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "libevent not found")
|
||||
ENDIF()
|
||||
SET(LIBS lsquic ${EVENT_LIB} ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS})
|
||||
IF(MSVC)
|
||||
FIND_LIBRARY(PCRE_LIB pcre)
|
||||
IF(PCRE_LIB)
|
||||
MESSAGE(STATUS "Found pcre: ${PCRE_LIB}")
|
||||
LIST(APPEND LIBS ${PCRE_LIB})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "pcre not found: http_server won't work")
|
||||
ENDIF()
|
||||
FIND_LIBRARY(PCREPOSIX_LIB pcreposix)
|
||||
IF(PCREPOSIX_LIB)
|
||||
MESSAGE(STATUS "Found pcreposix: ${PCREPOSIX_LIB}")
|
||||
LIST(APPEND LIBS ${PCREPOSIX_LIB})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "pcreposix not found: http_server won't work")
|
||||
ENDIF()
|
||||
LIST(APPEND LIBS ws2_32)
|
||||
LIST(APPEND LIBS iphlpapi)
|
||||
ENDIF()
|
||||
ENDIF() # LSQUIC_BIN OR LSQUIC_TESTS
|
||||
|
||||
IF(LSQUIC_BIN)
|
||||
IF(MSVC)
|
||||
SET(GETOPT_C wincompat/getopt.c)
|
||||
IF (LSQUIC_BIN)
|
||||
IF (CMAKE_SYSTEM_NAME STREQUAL Windows)
|
||||
FIND_LIBRARY(EVENT_LIB event)
|
||||
ELSE()
|
||||
FIND_LIBRARY(EVENT_LIB libevent${LIB_SUFFIX})
|
||||
IF(NOT EVENT_LIB)
|
||||
FIND_LIBRARY(EVENT_LIB libevent.so)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(EVENT_LIB)
|
||||
MESSAGE(STATUS "Found event: ${EVENT_LIB}")
|
||||
ELSE()
|
||||
MESSAGE(WARNING "libevent not found: binaries won't be built")
|
||||
SET(LSQUIC_BIN OFF)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
add_executable(http_server bin/http_server.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
IF(NOT MSVC) # TODO: port MD5 server and client to Windows
|
||||
add_executable(md5_server bin/md5_server.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
add_executable(md5_client bin/md5_client.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
ENDIF()
|
||||
add_executable(echo_server bin/echo_server.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
add_executable(echo_client bin/echo_client.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
add_executable(duck_server bin/duck_server.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
add_executable(duck_client bin/duck_client.c bin/prog.c bin/test_common.c bin/test_cert.c ${GETOPT_C})
|
||||
|
||||
|
||||
IF (NOT MSVC)
|
||||
|
||||
add_executable(http_client
|
||||
bin/http_client.c
|
||||
bin/prog.c
|
||||
bin/test_common.c
|
||||
bin/test_cert.c
|
||||
)
|
||||
LIST(APPEND LIBS pthread m)
|
||||
|
||||
#MSVC
|
||||
LIST(APPEND LIBS pthread m)
|
||||
ELSE()
|
||||
|
||||
add_executable(http_client
|
||||
bin/http_client.c
|
||||
bin/prog.c
|
||||
bin/test_common.c
|
||||
bin/test_cert.c
|
||||
wincompat/getopt.c
|
||||
wincompat/getopt1.c
|
||||
)
|
||||
LIST(APPEND LIBS ws2_32)
|
||||
|
||||
LIST(APPEND LIBS ws2_32)
|
||||
ENDIF()
|
||||
|
||||
TARGET_LINK_LIBRARIES(http_client ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(http_server ${LIBS})
|
||||
IF(NOT MSVC)
|
||||
TARGET_LINK_LIBRARIES(md5_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(md5_client ${LIBS})
|
||||
IF (LSQUIC_BIN)
|
||||
ADD_SUBDIRECTORY(bin)
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(echo_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(echo_client ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(duck_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(duck_client ${LIBS})
|
||||
|
||||
add_subdirectory(bin)
|
||||
ENDIF() # LSQUIC_BIN
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
|
|
22
EXAMPLES.txt
22
EXAMPLES.txt
|
@ -45,21 +45,21 @@ Usage Examples
|
|||
|
||||
Fetch Google's home page:
|
||||
|
||||
./http_client -s www.google.com -p /
|
||||
./bin/http_client -s www.google.com -p /
|
||||
|
||||
The default port number is 443, but it can be specified after colon
|
||||
using the -s flag. The value of the `host' header as well as the SNI
|
||||
value defaults to the host part of the -s option. -H option can be
|
||||
used to override it. For example:
|
||||
|
||||
./http_client -H www.youtube.com -s www.google.com:443 -p / -M HEAD
|
||||
./bin/http_client -H www.youtube.com -s www.google.com:443 -p / -M HEAD
|
||||
|
||||
The host part can be an IP address. Both IPv4 and IPv6 are supported.
|
||||
See ./http_client -h for a (long) list of different flags.
|
||||
See ./bin/http_client -h for a (long) list of different flags.
|
||||
|
||||
POST a file to calculate its CRC32 checksum:
|
||||
|
||||
./http_client -H www.litespeedtech.com -s 443 \
|
||||
./bin/http_client -H www.litespeedtech.com -s 443 \
|
||||
-p /cgi-bin/crc32.cgi -P file-256M -M POST
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
|
@ -83,7 +83,7 @@ On the command line, I do
|
|||
|
||||
To submit several requests concurrently, one can use -n and -r options:
|
||||
|
||||
./http_client -H www.litespeedtech.com -s 443 \
|
||||
./bin/http_client -H www.litespeedtech.com -s 443 \
|
||||
-p /cgi-bin/crc32.cgi -P file-256M -M POST -n 3 -r 10
|
||||
|
||||
This will open three parallel connections which will make ten POST
|
||||
|
@ -92,9 +92,9 @@ requests together.
|
|||
To perform load testing, it is good to mix sending and receiving data:
|
||||
|
||||
for i in {1..100}; do
|
||||
./http_client $COMMON_OPTS -p /cgi-bin/crc32.cgi -P file-256M \
|
||||
./bin/http_client $COMMON_OPTS -p /cgi-bin/crc32.cgi -P file-256M \
|
||||
-M POST >out-post.$i &
|
||||
./http_client $COMMON_OPTS -p /docs/file-256M >out-get.$i &
|
||||
./bin/http_client $COMMON_OPTS -p /docs/file-256M >out-get.$i &
|
||||
sleep 1
|
||||
done
|
||||
|
||||
|
@ -121,9 +121,9 @@ Running Instructions
|
|||
of packet that the client will accept.
|
||||
|
||||
Example Usage
|
||||
./http_client -p /file-1M -H www.litespeedtech.com -s 192.168.0.85:5443
|
||||
./bin/http_client -p /file-1M -H www.litespeedtech.com -s 192.168.0.85:5443
|
||||
-o version=FF000014
|
||||
./http_server -c www.litespeedtech.com,certschain,privkey
|
||||
./bin/http_server -c www.litespeedtech.com,certschain,privkey
|
||||
-s 0.0.0.0:5443 -W -o base_plpmtu=65535
|
||||
|
||||
Additional Notes
|
||||
|
@ -145,9 +145,9 @@ And so on.
|
|||
|
||||
For example, to test version negotiation:
|
||||
|
||||
./http_server -c www.litespeedtech.com,certschain,privkey \
|
||||
./bin/http_server -c www.litespeedtech.com,certschain,privkey \
|
||||
-o version=Q035 -L debug 2>server.out &
|
||||
./http_client -H www.litespeedtech.com -p Makefile -L debug 2>client.out
|
||||
./bin/http_client -H www.litespeedtech.com -p Makefile -L debug 2>client.out
|
||||
|
||||
Above, the client will start with the default, which is the highest supported
|
||||
QUIC version, which the server should negotiate down. You should see it from
|
||||
|
|
|
@ -1,4 +1,74 @@
|
|||
# Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE.
|
||||
LIST(APPEND LIBS ${EVENT_LIB})
|
||||
|
||||
IF(MSVC)
|
||||
FIND_LIBRARY(PCRE_LIB pcre)
|
||||
IF(PCRE_LIB)
|
||||
MESSAGE(STATUS "Found pcre: ${PCRE_LIB}")
|
||||
LIST(APPEND LIBS ${PCRE_LIB})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "pcre not found: http_server won't work")
|
||||
ENDIF()
|
||||
FIND_LIBRARY(PCREPOSIX_LIB pcreposix)
|
||||
IF(PCREPOSIX_LIB)
|
||||
MESSAGE(STATUS "Found pcreposix: ${PCREPOSIX_LIB}")
|
||||
LIST(APPEND LIBS ${PCREPOSIX_LIB})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "pcreposix not found: http_server won't work")
|
||||
ENDIF()
|
||||
LIST(APPEND LIBS ws2_32)
|
||||
LIST(APPEND LIBS iphlpapi)
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC)
|
||||
SET(GETOPT_C ../wincompat/getopt.c)
|
||||
ENDIF()
|
||||
add_executable(http_server http_server.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
IF(NOT MSVC) # TODO: port MD5 server and client to Windows
|
||||
add_executable(md5_server md5_server.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
add_executable(md5_client md5_client.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
ENDIF()
|
||||
add_executable(echo_server echo_server.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
add_executable(echo_client echo_client.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
add_executable(duck_server duck_server.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
add_executable(duck_client duck_client.c prog.c test_common.c test_cert.c ${GETOPT_C})
|
||||
|
||||
|
||||
IF (NOT MSVC)
|
||||
|
||||
add_executable(http_client
|
||||
http_client.c
|
||||
prog.c
|
||||
test_common.c
|
||||
test_cert.c
|
||||
)
|
||||
|
||||
#MSVC
|
||||
ELSE()
|
||||
|
||||
add_executable(http_client
|
||||
http_client.c
|
||||
prog.c
|
||||
test_common.c
|
||||
test_cert.c
|
||||
../wincompat/getopt.c
|
||||
../wincompat/getopt1.c
|
||||
)
|
||||
|
||||
ENDIF()
|
||||
|
||||
TARGET_LINK_LIBRARIES(http_client ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(http_server ${LIBS})
|
||||
IF(NOT MSVC)
|
||||
TARGET_LINK_LIBRARIES(md5_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(md5_client ${LIBS})
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(echo_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(echo_client ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(duck_server ${LIBS})
|
||||
TARGET_LINK_LIBRARIES(duck_client ${LIBS})
|
||||
|
||||
|
||||
INCLUDE(CheckFunctionExists)
|
||||
CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG)
|
||||
CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG)
|
||||
|
|
Loading…
Reference in a new issue