Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
eaff20e
Added move set_body for preformance
MatusKysel Feb 13, 2019
be5e36f
Removed call into NULL member variable m_proxy_data
Jun 8, 2019
d1af84b
Haiku check for -lnetwork
Begasus Nov 13, 2019
0e29fcb
Fix clang getting CXXFLANGS instead of CXXFLAGS
robinlinden Mar 24, 2020
73cfb36
Fix Travis
robinlinden Mar 23, 2020
fc41dd5
prep develop branch for work on next release
Apr 19, 2020
20ea478
Overhaul URI authority handling to allow better validation per RFC398…
Apr 20, 2020
f7781fa
misc cleanup
Apr 20, 2020
7e6ca9a
Merge pull request #878 from robinlinden/fix-scons-typo
zaphoyd Apr 20, 2020
5b8de24
PR credits
Apr 20, 2020
2c355d9
Fix typo in CMakeLists.txt that caused CXX_FLAGS to be improperly quo…
Apr 20, 2020
1f38c0b
Fix errors for projects that build websocket++ in multiple translatio…
Apr 20, 2020
d374dc1
Allow Travis to build all branches
robinlinden Apr 20, 2020
59f1b43
Merge commit '1b11fd301531e6df35a6107c1e8665b1e77a2d8e' into develop
Apr 27, 2020
36b73da
[cmake] Remove quotes that was making it hard for cmake to find newer…
Apr 27, 2020
72c429c
[cmake] Adjust CMake config to use GNUInstallDirs to choose install d…
Apr 27, 2020
4d833a3
updated SConstruct to be compatible with Python 3
jochenjagers Apr 28, 2020
9f49a15
fix regression in new uri parsing logic. Add new test case for this s…
Apr 28, 2020
fe5ffc1
Merge pull request #885 from jochenjagers/fix/scons_python_3
zaphoyd Apr 28, 2020
fb0e97f
update changelog for recent PR
Apr 28, 2020
97296a3
more Python 3 fixes, references #857
Apr 28, 2020
52eb086
python 3 fixes, references #857
Apr 28, 2020
98807da
Add license type
cycledriver Jun 5, 2020
f49eee7
Merge pull request #906 from cycledriver/patch-1
zaphoyd Jun 7, 2020
2bfa00d
[docs] Additional license clarification documentation references #906
Jun 7, 2020
a9fc060
[scratch_client] Fix copy/paste error references #893
Jun 7, 2020
29c84c4
[core] Cancel ping timer before calling blocking pong handler. fixes …
Jun 7, 2020
0d4f361
[core] Add defensive assertions to HTTP message read logic fixes #899
Jun 7, 2020
94b42e6
Fix documentation typo
Jun 27, 2020
d9f48e7
[core/http] Many updates to remove or isolate the use of exceptions. …
Jun 27, 2020
901425a
[core] Cancel ping timer on close fixes #664
Jun 30, 2020
ec5c379
Add test and refactor to_hex
matrohin Jul 1, 2020
57550c9
update changelog for recent PR
Jul 9, 2020
91d43b9
Merge branch 'matrohin-develop' into develop
Jul 9, 2020
226c9fe
[docs] Clean up config and handler documentation
Jul 10, 2020
e8c5bff
Merge branch 'u/fix-scons-ci' of https://github.com/robinlinden/webso…
Jul 10, 2020
7ae4e44
[travis] Don't CI experimental or legacy branches
Jul 10, 2020
8c41a79
Merge branch 'robinlinden-u/fix-scons-ci' into develop
Jul 10, 2020
c2dc3ab
[travis] Update travis to use 18.04 distribution
Jul 10, 2020
7c29d7d
Update credits for issue, was reported and fixed in an earlier PR as …
Jul 10, 2020
fea20c6
[travis] switch travis build to cmake
Jul 10, 2020
76c1752
Merge pull request #849 from Begasus/develop
zaphoyd Jul 10, 2020
46ab940
[cmake] Refactor cmake check for Apple/Haiku/others to be a little mo…
Jul 10, 2020
03743cc
Merge branch 'set_body-move' of https://github.com/SophiaTX/WebSocket…
Jul 11, 2020
180f83a
Add guards for functions requiring C++11 features
Jul 26, 2020
2667209
Merge branch 'SophiaTX-set_body-move' into develop
Jul 31, 2020
3610eeb
[docs] Add changelog note about move based set_body references #792
Jul 31, 2020
058b7bc
[feature] Add support for exception free mode fixes #792
Jul 31, 2020
a4af806
Update inline todo/docs add missing header file
Jul 31, 2020
6d59539
Merge branch 'pr/820' of https://github.com/stkaufer/websocketpp into…
Jul 31, 2020
4ccd578
Fix null pointer deference in proxy error handling code fixes #820 #825
Jul 31, 2020
a04fb34
Merge branch 'stkaufer-pr/820' into develop
Jul 31, 2020
2c3d714
[improvement] Improve error handling options for get_connection and s…
Aug 7, 2020
afcf09d
Update examples to remove use of now deprecated functionality referen…
Aug 7, 2020
a4494d5
Correct a regression introduced in 0.8.0 that prevented socket option…
Aug 7, 2020
dc3bde1
Added static casts to get rid of warnings on release builds with MSVC…
fedor-strelkov Dec 16, 2020
35f0e99
[utility] Removed `websocketpp::utility::to_lower` from bundled utili…
Jan 28, 2021
25d468c
fix grammatical errors in documentation
Jun 22, 2021
105b0e3
[docs] Clean up documentation
Jun 29, 2021
3197a52
[core] Remove the use of simple template ids as they have been remove…
Jun 29, 2021
91504b6
[core] Update changelog
Jun 29, 2021
5f0c2b2
Insert Server Name Indication (SNI) only for hostnames, not for IP ad…
jakjinak Aug 27, 2020
05d1189
SCons 4.2.0 no longer has env_cpp11.has_key()
gcsideal Feb 14, 2022
5d4ab4e
Merge pull request #1024 from LocutusOfBorg/fix-scons
zaphoyd Feb 19, 2022
914cb7c
Update changelog to credit additional python 3 fixes, references #1024
Feb 19, 2022
46260bb
Merge pull request #924 from jakjinak/SNI-only-for-hostnames
zaphoyd Feb 19, 2022
21bc438
Merge branch 'develop' of github.com:zaphoyd/websocketpp into develop
Feb 19, 2022
25954be
Additional documentation and adjustment to support standalone asio an…
Feb 19, 2022
b9aeec6
Merge pull request #955 from cyberiada-com/pr/static-casts-for-msvc
zaphoyd May 24, 2022
146925c
fixed incompatibility with Boost 1.87 due to use of previously-deprec…
amini-allight Feb 12, 2025
30e7746
updated docstrings
amini-allight Feb 12, 2025
3d13472
updated docstrings
amini-allight Feb 12, 2025
6867ad0
silenced warning about unused variable in TLS IP address validation, …
amini-allight Feb 14, 2025
dbdde20
improved variable names and fixed comments
amini-allight Feb 14, 2025
0964874
fixed use of deprecated boost::asio::deadline_timer in tests
amini-allight Feb 20, 2025
a11fa6f
replaced uses of boost::asio::io_context::strand::wrap with boost::as…
amini-allight Feb 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
language: cpp
dist: bionic
compiler:
- gcc
before_install:
#- sudo apt-get install libboost-chrono1.48-dev libboost-regex1.48-dev libboost-system1.48-dev libboost-thread1.48-dev libboost-test1.48-dev libboost-random1.48-dev -y
- sudo add-apt-repository -y ppa:boost-latest/ppa && sudo apt-get update -q && sudo apt-get install -y libboost-chrono1.55-dev libboost-random1.55-dev libboost-regex1.55-dev libboost-system1.55-dev libboost-thread1.55-dev libboost-test1.55-dev
addons:
apt:
packages:
- libboost-random-dev
- libboost-system-dev
- libboost-test-dev
- libboost-thread-dev
- zlib1g-dev
- cmake
env:
global:
- BOOST_INCLUDES=/usr/include
- BOOST_LIBS=/usr/lib/x86_64-linux-gnu
script: scons -j 2 && scons test
script: cmake -DBUILD_EXAMPLES=1 -DBUILD_TESTS=1 . && make -j 2 && make test
branches:
only:
- master
- develop
except:
- 0.2.x
- experimental
- legacy

notifications:
recipients:
- [email protected]
Expand Down
29 changes: 21 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ endif ()
############ Project name and version
set (WEBSOCKETPP_MAJOR_VERSION 0)
set (WEBSOCKETPP_MINOR_VERSION 8)
set (WEBSOCKETPP_PATCH_VERSION 2)
set (WEBSOCKETPP_PATCH_VERSION 3)
set (WEBSOCKETPP_VERSION ${WEBSOCKETPP_MAJOR_VERSION}.${WEBSOCKETPP_MINOR_VERSION}.${WEBSOCKETPP_PATCH_VERSION})

if(POLICY CMP0048)
Expand All @@ -39,11 +39,13 @@ endif()

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

include(GNUInstallDirs)

set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
if (WIN32 AND NOT CYGWIN)
set (DEF_INSTALL_CMAKE_DIR cmake)
else ()
set (DEF_INSTALL_CMAKE_DIR lib/cmake/websocketpp)
set (DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/websocketpp)
endif ()
set (INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")

Expand Down Expand Up @@ -75,6 +77,7 @@ include (CMakeHelpers)
option (ENABLE_CPP11 "Build websocketpp with CPP11 features enabled." TRUE)
option (BUILD_EXAMPLES "Build websocketpp examples." FALSE)
option (BUILD_TESTS "Build websocketpp tests." FALSE)
option (USE_ASIO_STANDALONE "Build websocketpp examples and tests using the standalone ASIO library." FALSE)

if (BUILD_TESTS OR BUILD_EXAMPLES)

Expand Down Expand Up @@ -123,11 +126,15 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)

# g++
if (CMAKE_COMPILER_IS_GNUCXX)
if (NOT APPLE)
if (NOT APPLE AND NOT HAIKU)
set (WEBSOCKETPP_PLATFORM_LIBS pthread rt)
else()
if (HAIKU)
set (WEBSOCKETPP_PLATFORM_LIBS pthread network)
else()
set (WEBSOCKETPP_PLATFORM_LIBS pthread)
endif()
endif()
set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
set (WEBSOCKETPP_BOOST_LIBS system thread)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
Expand All @@ -145,14 +152,16 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)

# clang
if (CMAKE_COMPILER_IS_CLANGXX)
if (NOT APPLE)
set (WEBSOCKETPP_PLATFORM_LIBS pthread rt)
else()
if (APPLE)
set (WEBSOCKETPP_PLATFORM_LIBS pthread)
elseif (HAIKU)
set (WEBSOCKETPP_PLATFORM_LIBS pthread network)
else()
set (WEBSOCKETPP_PLATFORM_LIBS pthread rt)
endif()
set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
set (WEBSOCKETPP_BOOST_LIBS system thread)
set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++0x -stdlib=libc++") # todo: is libc++ really needed here?
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
if (NOT APPLE)
add_definitions (-DNDEBUG -Wall -Wno-padded) # todo: should we use CMAKE_C_FLAGS for these?
endif ()
Expand Down Expand Up @@ -215,7 +224,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
set (Boost_USE_MULTITHREADED TRUE)
set (Boost_ADDITIONAL_VERSIONS "1.39.0" "1.40.0" "1.41.0" "1.42.0" "1.43.0" "1.44.0" "1.46.1") # todo: someone who knows better spesify these!

find_package (Boost 1.39.0 COMPONENTS "${WEBSOCKETPP_BOOST_LIBS}")
find_package (Boost 1.39.0 COMPONENTS ${WEBSOCKETPP_BOOST_LIBS})

if (Boost_FOUND)
# Boost is a project wide global dependency.
Expand Down Expand Up @@ -246,6 +255,10 @@ endif()

############ Add projects

if (USE_ASIO_STANDALONE)
add_definitions("-DASIO_STANDALONE -DASIO_HAS_BOOST_DATE_TIME")
endif ()

# Add main library
add_subdirectory (websocketpp)

Expand Down
4 changes: 4 additions & 0 deletions COPYING
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
Main Library:

BSD 3-Clause License

Copyright (c) 2014, Peter Thorson. All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -64,6 +66,8 @@ use as a header only library. This conversion was done by Peter Thorson
([email protected]) in 2013. All modifications to the code are redistributed
under the same license as the original, which is listed below.

New BSD License / 3-Clause BSD License

Copyright (c) 2011, Micael Hildenborg
All rights reserved.

Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = WebSocket++
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 0.8.2
PROJECT_NUMBER = 0.8.3-dev

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
50 changes: 26 additions & 24 deletions SConstruct
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
import os, sys, commands
import os, sys, SCons.Errors
from subprocess import check_output

env = Environment(ENV = os.environ)

# figure out a better way to configure this
if os.environ.has_key('CXX'):
if 'CXX' in os.environ:
env['CXX'] = os.environ['CXX']

if os.environ.has_key('DEBUG'):
if 'DEBUG' in os.environ:
env['DEBUG'] = os.environ['DEBUG']

if os.environ.has_key('CXXFLAGS'):
if 'CXXFLAGS' in os.environ:
#env['CXXFLAGS'] = os.environ['CXXFLAGS']
env.Append(CXXFLAGS = os.environ['CXXFLAGS'])

if os.environ.has_key('LINKFLAGS'):
if 'LINKFLAGS' in os.environ:
#env['LDFLAGS'] = os.environ['LDFLAGS']
env.Append(LINKFLAGS = os.environ['LINKFLAGS'])

Expand All @@ -22,24 +24,24 @@ if os.environ.has_key('LINKFLAGS'):
## or set BOOST_INCLUDES and BOOST_LIBS if Boost comes with your OS distro e.g. and
## needs BOOST_INCLUDES=/usr/include/boost and BOOST_LIBS=/usr/lib like Ubuntu.
##
if os.environ.has_key('BOOSTROOT'):
if 'BOOSTROOT' in os.environ:
os.environ['BOOST_ROOT'] = os.environ['BOOSTROOT']

if os.environ.has_key('BOOST_ROOT'):
if 'BOOST_ROOT' in os.environ:
env['BOOST_INCLUDES'] = os.environ['BOOST_ROOT']
env['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT'], 'stage', 'lib')
elif os.environ.has_key('BOOST_INCLUDES') and os.environ.has_key('BOOST_LIBS'):
elif 'BOOST_INCLUDES' in os.environ and 'BOOST_LIBS' in os.environ:
env['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES']
env['BOOST_LIBS'] = os.environ['BOOST_LIBS']
else:
raise SCons.Errors.UserError, "Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS was set!"
raise SCons.Errors.UserError("Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS were set!")

## Custom OpenSSL
if os.environ.has_key('OPENSSL_PATH'):
if 'OPENSSL_PATH' in os.environ:
env.Append(CPPPATH = os.path.join(os.environ['OPENSSL_PATH'], 'include'))
env.Append(LIBPATH = os.environ['OPENSSL_PATH'])

if os.environ.has_key('WSPP_ENABLE_CPP11'):
if 'WSPP_ENABLE_CPP11' in os.environ:
env['WSPP_ENABLE_CPP11'] = True
else:
env['WSPP_ENABLE_CPP11'] = False
Expand Down Expand Up @@ -76,17 +78,17 @@ if env['PLATFORM'].startswith('win'):
env['CCFLAGS'] = '%s /EHsc /GR /GS- /MD /nologo %s %s' % (warn_flags, arch_flags, opt_flags)
env['LINKFLAGS'] = '/INCREMENTAL:NO /MANIFEST /NOLOGO /OPT:REF /OPT:ICF /MACHINE:X86'
elif env['PLATFORM'] == 'posix':
if env.has_key('DEBUG'):
if 'DEBUG' in env:
env.Append(CCFLAGS = ['-g', '-O0'])
else:
env.Append(CPPDEFINES = ['NDEBUG'])
env.Append(CCFLAGS = ['-O1', '-fomit-frame-pointer'])
env.Append(CCFLAGS = ['-Wall'])
#env['LINKFLAGS'] = ''
elif env['PLATFORM'] == 'darwin':
if not os.environ.has_key('CXX'):
if not 'CXX' in os.environ:
env['CXX'] = "clang++"
if env.has_key('DEBUG'):
if 'DEBUG' in env:
env.Append(CCFLAGS = ['-g', '-O0'])
else:
env.Append(CPPDEFINES = ['NDEBUG'])
Expand Down Expand Up @@ -157,29 +159,29 @@ env_cpp11 = env.Clone ()

if env_cpp11['CXX'].startswith('g++'):
# TODO: check g++ version
GCC_VERSION = commands.getoutput(env_cpp11['CXX'] + ' -dumpversion')
GCC_VERSION = check_output([env_cpp11['CXX'], '-dumpversion']).decode("utf-8")

if GCC_VERSION > "4.4.0":
print "C++11 build environment partially enabled"
print("C++11 build environment partially enabled")
env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x'],TOOLSET = ['g++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])
else:
print "C++11 build environment is not supported on this version of G++"
print("C++11 build environment is not supported on this version of G++")
elif env_cpp11['CXX'].startswith('clang++'):
print "C++11 build environment enabled"
env.Append(CXXFLANGS = ['-stdlib=libc++'],LINKFLAGS=['-stdlib=libc++'])
print("C++11 build environment enabled")
env.Append(CXXFLAGS = ['-stdlib=libc++'],LINKFLAGS=['-stdlib=libc++'])
env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x','-stdlib=libc++'],LINKFLAGS = ['-stdlib=libc++'],TOOLSET = ['clang++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])

# look for optional second boostroot compiled with clang's libc++ STL library
# this prevents warnings/errors when linking code built with two different
# incompatible STL libraries.
if os.environ.has_key('BOOST_ROOT_CPP11'):
if 'BOOST_ROOT_CPP11' in os.environ:
env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_ROOT_CPP11']
env_cpp11['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT_CPP11'], 'stage', 'lib')
elif os.environ.has_key('BOOST_INCLUDES_CPP11') and os.environ.has_key('BOOST_LIBS_CPP11'):
elif 'BOOST_INCLUDES_CPP11' in os.environ and 'BOOST_LIBS_CPP11' in os.environ:
env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES_CPP11']
env_cpp11['BOOST_LIBS'] = os.environ['BOOST_LIBS_CPP11']
else:
print "C++11 build environment disabled"
print("C++11 build environment disabled")

# if the build system is known to allow the isystem modifier for library include
# values then use it for the boost libraries. Otherwise just add them to the
Expand Down Expand Up @@ -271,8 +273,8 @@ subprotocol_server = SConscript('#/examples/subprotocol_server/SConscript',varia
# telemetry_server
telemetry_server = SConscript('#/examples/telemetry_server/SConscript',variant_dir = builddir + 'telemetry_server',duplicate = 0)

# external_io_service
external_io_service = SConscript('#/examples/external_io_service/SConscript',variant_dir = builddir + 'external_io_service',duplicate = 0)
# external_io_context
external_io_context = SConscript('#/examples/external_io_context/SConscript',variant_dir = builddir + 'external_io_context',duplicate = 0)

if not env['PLATFORM'].startswith('win'):
# iostream_server
Expand Down
79 changes: 79 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,83 @@
HEAD
- MINOR BREAKING BUNDLED LIBRARY CHANGE: The bundled mini-HTTP library has
been refactored to eliminate its use of exceptions. This does not affect any
of the core library APIs. If any users are calling into the underlying HTTP
libraries directly (classes in the namespace `websocketpp::http::*`) they
should review any error handling they do.
- MINOR BREAKING BUNDLED LIBRARY CHANGE: The `websocketpp::utility::to_lower`
function, from the bundled utility library, has been removed. This vestigial
code was not used by the library at all and throwing warnings in MSVC.
Thank you fedor-strelkov and maksis for reporting and remediation ideas. #956
- Feature: WebSocket++ can now be compiled without exceptions by defining
`_WEBSOCKETPP_NO_EXCEPTIONS` in the C++ preprocessor. All internal use of
exceptions have been removed. External interfaces that throw exceptions are
still avaliable and supported (except in exception free mode) but now have
overloads that allow `error_code` based error handling.
- Compatibility: Overhauled the URI authority parsing logic to be more
compliant with RFC3986. WebSocket++ is now able to detect invalid registry
hosts, invalid IPv4 and IPv6 literal addresses. Dozens of additional
uri tests added (thank you to the uriparser project for inspiration & test
cases). URI methods that produce URI strings will now produce RFC3986
compliant URIs when IPv6 literals are involved. Thank you Jeff Davie,
thorsten-klein, mstaz, and barsnick for reporting, example patches, and
testing. #601 #879
- Improvement: The error handling system for the server role's async start
accept loop and connection generation has been significantly improved.
`endpoint::get_connection` now takes an output parameter ec that gives
a detailed error code if connection creation fails. `endpoint::start_accept`
now accepts a handler function as a parameter instead of an error code.
This handler function allows the client program to be alerted when the
async accept loop stops (for any reason, including explicit cancellation)
at any time. Previously, it was only possible to tell if the initial loop
start had failed, making it difficult to tell when/if the async accept loop
needed to be restarted. The loop handler returns two error codes, a higher
level library code and a second more specific transport level code. The
old `endpoint::get_connection` and `endpoint::start_accept` functions
remain for backwards compatibility but are deprecated. Thank you Oleh
Derevenko for reporting. #896
- Improvement: Cancel ping timer before calling blocking pong handler.
This should reduce any unnecessary expiration logic done to a timer
that is going to be cancelled regardless. Thank you Oleh Derevenko
for reporting. #901
- Improvement: Cancel ping timer on connection close. Once the close handeshake
begins, pong responses can no longer be delivered and any outstanding pings
can be assumed to have been preempted by the close. fixes #664
- Performance: Refactor to_hex utility method to reduce unecessary copying,
std::string construction, and duplicated code. Add tests. Thank you Dmitry
Matrokhin for reporting and the patch. #914
- Performance: Move based overload for connection::set_body for C++11 and
later compilers. Thank you Matus Kysel for the patch & tests. #792
- Reliability: Add a few defensive assertions to guard against corrupted
HTTP message reads. Thank you Oleh Derevenko for reporting. #899
- Compatibility: Remove use of simple template ids in constructors. This was
required to compile in C++20 mode and higher. Thank you yushb0602 for
reporting and jcelerier for a patch.
- Fix Regression: Correct a regression introduced in 0.8.0 that broke
functionality for setting accepted socket options like TCP_NODELAY.
#530 #812
- Bug: Fix null pointer deference in proxy error handling code. Thank you
abitmore for reporting and stkaufer for a patch. #820 #825
- Documentation: Added language to explicitly clarify that the library
license is in fact the 3-Clause BSD license. #906
- Travis/CI: Updated Travis config to use newer version of ubuntu, and use
CMake based build & tests.
- SCons: Fix typo in SConstruct that prevented clang from getting the right
value for CXXFLAGS. Thank you robinlinden for reporting and a patch. #878
- SCons: Improve compatibility with Python 3. Thank you Jochen Jägers and
Gianfranco Costamagna for reporting and the patches. #885 #857 #1024
- SCons: Correct copy/paste error in `scratch_client` SConstruct file.
Thank you kautsig for reporting and the patch. #893
- CMake: Fix typo in CMakeLists.txt that caused CXX_FLAGS to be improperly
quoted. Removed unnecessary hardcoded dependency on libc++ for clang.
Thank you kraj and leochan2009 for reporting and a patch. #614 #859
- CMake: Fix issue in CMakeLists.txt that caused boost dependencies to be
seen as a single library rather than multiple. Thank you Gianfranco
Costamagna for reporting and a patch. #855
- CMake: Adjust CMake config to use GNUInstallDirs to choose install
directories rather than hard coding. Thank you Khem Raj for reporting and
a patch. #854
- CMake: Improve support for building tests & examples on the Haiku platform
Thank you Schrijvers Luc for reporting and the patch. #849

0.8.2 - 2020-04-19
- Examples: Update print_client_tls example to remove use of deprecated
Expand Down
Loading