|
05ed7c8c
|
2024-02-18T18:00:57
|
|
bufferevent_pair: fix infer warnings due to upcast() return NULL
The only user that is care about this is bufferevent_pair_get_partner(),
so let's move the check there.
|
|
92ea8476
|
2024-02-18T08:56:46
|
|
Forbid 0x/+/-/whitespace prefixes on HTTP chunk sizes (#1542)
Currently, libevent's HTTP parser accepts and ignores 0x, +, and whitespace prefixes on chunk sizes. It also ignores - prefixes on chunk sizes of 0. This patch fixes that.
There is a potential danger in the current behavior, which is that there exist HTTP implementations that interpret chunk sizes as their longest valid prefix. For those implementations, 0xa (for example) is equivalent to 0, and this may present a request smuggling risk when those implementations are used in conjunction with libevent. However, as far I'm aware, there is no HTTP proxy that both interprets 0xa as 0 and forwards it verbatim, so I think this is a low-risk bug that is acceptable to report in public.
|
|
da3c7b50
|
2024-02-18T12:07:07
|
|
Update link to the github package registry usage from github actions
Ugh, old link even don't have any redirect, what is a pitty.
[skip ci]
|
|
7870e85e
|
2024-01-24T13:19:23
|
|
install DESTINATION use CMAKE_INSTALL_<dir>
|
|
b698e6c4
|
2024-01-23T04:29:04
|
|
Make MbedTLS and OpenSSL dependencies configurable (#1544)
As acfac7a#r124469888 mentioned, LibeventConfig.cmake is looking for MBedTLS package, even if libevent is not configured to use MBedTLS.
This PR makes MbedTLS and OpenSSL dependencies configurable.
Fixes: #1543
|
|
665d79f1
|
2024-01-18T16:42:52
|
|
Fix integer overflow in HTTP version (#1541)
Currently, when libevent parses requests with version `HTTP/4294967295.255`, you end up with `req->major == req->minor == (char)-1`. (At least on linux-gnu-x86_64, where `char` is signed.)
This is sort of weird.
This patch changes the version parser to match the grammar in RFCs 7230 and 9112. (i.e. `HTTP/[0-9].[0-9]`)
EDIT: Technically, a little stronger than the RFC requires, since this patch continues to block major versions greater than 1, which was already what libevent was doing.
|
|
55899c2f
|
2024-01-14T21:24:37
|
|
Use read/write instead of readv/writev for single buffer
The `readv`/`writev` functions are designed for scattered I/O optimally,
their logic in the kernel is more sophisticated, compared to read/write,
which includes extra on-stack `iovec` in the kernel space, importing `iovec`
array from user space to kernel space, reading/writing with `iov_iter`, etc.
As a result, using `readv`/`writev` on single-segment `iovec` will fall into
the special branch in the kernel where it is imported as `ITER_UBUF` differed
from `ITER_IOVEC` for multiple-segments `iovec`.
Thus, it is just not worth calling `readv`/`writev` for single-segment `iovec`,
we should use `read`/`write` instead, to save it from going through the
sophisticated yet unnecessary kernel code path, circumvent a waste of
kernel on-stack memory, copying `iovec` between user space and kernel space, etc.
|
|
3f508af6
|
2024-01-14T13:40:35
|
|
Ignore the project files from IDE or editors
I sometimes browse and edit C/C++ code with VSCode,
and it would generate some project files in .vscode
which could easily be added and even pushed to a git repo by accident.
It's sort of annoying for programmers who work with VS/VSCode,
IntelliJ/Clion, or other widely-used IDE or editors to prevent
themself from using git command like `git add .` in lib event project.
Therefore, I propose leaving the project files generated by VS/VSCode
and IntelliJ/Clion untracked for libevent project. Hopefully, this can be accepted.
|
|
23cdd610
|
2024-01-15T12:26:58
|
|
Use evutil_set_tcp_keepalive for sample/becat.c
Since #1532 introduced the util function for consolidating TPC keep-alive settings,
there is no need to write other handmade functions elsewhere.
|
|
cffb7c03
|
2024-01-13T15:54:49
|
|
ci: disable ABI check temporary (I hope that "temporary")
Refs: https://github.com/libevent/libevent/issues/1463
|
|
9d4853b3
|
2024-01-13T20:51:49
|
|
Optimize preprocessor directives on Solaris for evutil_set_tcp_keepalive (#1536)
Changes:
- Optimize preprocessor directives on Solaris for evutil_set_tcp_keepalive
- Reduce the amount of code being compiled and trim trailing whitespace in passing.
- Move comments for Solaris under its macro
- Refactor the control flow
|
|
76460fbe
|
2024-01-06T14:29:22
|
|
Fix windows CI (#1533)
But note, that there is still issues with MbedTLS and ZLIB:
CMake Error at C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Error: Could NOT find MbedTLS (missing: MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY
MBEDTLS_CRYPTO_LIBRARY MBEDTLS_X509_LIBRARY MBEDTLS_LIBRARIES
MBEDTLS_VERSION)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
D:/a/libevent/libevent/cmake/FindMbedTLS.cmake:142 (find_package_handle_standard_args)
D:/a/libevent/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package)
C:/Program Files/CMake/share/cmake-3.27/Modules/CMakeFindDependencyMacro.cmake:76 (find_package)
D:/a/libevent/libevent/build/LibeventConfig.cmake:43 (find_dependency)
D:/a/libevent/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package)
CMakeLists.txt:11 (find_package)
But by some reason it is not a fatal error on some builds:
-- OpenSSL lib: optimized;C:/Program Files/OpenSSL/lib/VC/libssl64MD.lib;debug;C:/Program Files/OpenSSL/lib/VC/libssl64MDd.lib;optimized;C:/Program Files/OpenSSL/lib/VC/libcrypto64MD.lib;debug;C:/Program Files/OpenSSL/lib/VC/libcrypto64MDd.lib
-- Could NOT find MbedTLS (missing: MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDTLS_CRYPTO_LIBRARY MBEDTLS_X509_LIBRARY MBEDTLS_LIBRARIES MBEDTLS_VERSION)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11")
This will be fixed separatelly - #1534, partially worked CI better then
fully broken anyway.
* ci/windows:
Update vcpkg to fix windows CI
Switch to windows-latest (just in case)
|
|
3e01178b
|
2024-01-06T13:53:32
|
|
Update vcpkg to fix windows CI
Previusly it got lots of 404 errors during downloading packages, this
was due to too old repository had been used.
|
|
85c09bbf
|
2024-01-06T13:15:58
|
|
Switch to windows-latest (just in case)
|
|
7658b788
|
2024-01-06T00:52:43
|
|
Implement full support of TCP Keep-Alives across most Unix-like OS's (#1532)
Default settings of TCP keep-alive are not always feasible,
take Linux for example, the duration a connection needs to be
idle before sending out the first keep-alive probe is two hours,
which makes detecting dead connections extremely deferred. Thus,
enabling TCP keep-alive will be to little avail.
This sets TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT when enabling TCP
keep-alive mechanism to make it practicable.
|
|
0c54433c
|
2023-11-26T14:53:23
|
|
time-test: use event_new for compatibility with future libevent (#1525)
|
|
4c38de8c
|
2023-11-26T20:52:32
|
|
Fix -Walloc-size (#1526)
Co-authored-by: Azat Khuzhin <azat@libevent.org>
|
|
4881b592
|
2023-11-25T19:13:35
|
|
Merge pull request #1519 from cculianu/ws_c_fixes
|
|
7f5b8f19
|
2023-11-18T15:55:14
|
|
Fix documentation inconsistency in evhttp callbacks
This commit addresses a minor inconsistency identified in the
documentation of multiple `evhttp` callback functions within
the `event2/http.h` header file. It was observed that the word
"additional" was presumably missing in the description of the
`arg` parameter for several functions. This oversight led to
an incorrect phrasing: "an context argument for the callback."
The documentation for the following functions has been updated
to rectify this issue:
- `evhttp_set_gencb`
- `evhttp_set_bevcb`
- `evhttp_set_newreqcb`
- `evhttp_set_errorcb`
This commit solely improves the readability of the function
descriptions without altering any functional aspects of the
code.
|
|
cfb2b89a
|
2023-10-23T17:15:34
|
|
fix ERR macro geting redefined
In evutil.c a macro ERR gets defined,
this is a very generic name in case that
in a included header file ERR is used too,
the compiler will fail complaining
about the redefinition of the macro ERR.
To fix this make sure ERR is undefined,
before defining it in evutil.c
|
|
a579b1d7
|
2023-10-20T15:36:07
|
|
Fix compile error in evbuffer_read()
The variable chainp is only used if USE_IOVEC_IMPL is defined.
This makes a strict compiler complain about unused variables,
since chainp is declared outside of an USE_IOVEC_IMPL block.
|
|
15b9b6f0
|
2023-10-17T12:45:33
|
|
Apply suggestions from code review
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
|
|
b828c4ab
|
2023-10-16T15:25:12
|
|
Added 10MiB recv limit for WS frames, also a small nit
- Added WS_MAX_RECV_FRAME_SZ, if a received frame exceeds this limit (10
MiB), error out. This is a DoS prevention measure.
- Also redid the unmasking code in get_ws_frame(), to avoid assumptions
about the size of an unsigned int and some casting, and avoid
memcpy(), just use the mask bytes from the buffer that are already there
to unmask.
|
|
7fbbe86f
|
2023-10-14T23:53:36
|
|
Fix unaligned access + missing frame length
get_ws_frame:
- had potentially unaligned access; fixed.
- was not reading the full 8 bytes in the 64-bit case (was using the
incorrect htons); fixed.
make_ws_frame:
- wasn't writing the length in the 8-byte case.
Also switched both functions to use size_t rather than int where
appropriate.
|
|
c9af0245
|
2023-10-12T10:22:04
|
|
wepoll api: fix definition of EPOLLONESHOT to match Linux
|
|
23685cfb
|
2023-09-28T11:18:10
|
|
Fix some typos (#1515)
|
|
d30ad0a7
|
2023-09-22T10:21:15
|
|
Merge branch 'becat-fixes-v2'
* becat-fixes-v2:
becat: change -R to -b (since it is more of a buffer size)
becat: add ability to set TCP keepalive
|
|
9e4693ed
|
2023-09-22T10:21:06
|
|
becat: change -R to -b (since it is more of a buffer size)
|
|
617cf5ef
|
2023-09-22T10:21:06
|
|
becat: add ability to set TCP keepalive
|
|
c15ba75d
|
2023-09-22T09:35:42
|
|
Merge branch 'evbuffer_add_reference_with_offset' - #1513
* evbuffer_add_reference_with_offset:
Add a comment for evbuffer_ref_cleanup_cb
tests: simplify test_evbuffer_add_reference_with_offset
Add function evbuffer_add_reference_with_offset()
|
|
c2a935b5
|
2023-09-22T09:34:59
|
|
Add a comment for evbuffer_ref_cleanup_cb
|
|
d9780cf9
|
2023-09-21T22:04:17
|
|
Fix -Wsingle-bit-bitfield-constant-conversion warning in clang 16
report:
/src/le/libevent/sample/becat.c:304:29: warning: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Wsingle-bit-bitfield-constant-conversion]
case 'k': o.extra.keep = 1; break;
|
|
cc3a9200
|
2023-09-21T22:02:48
|
|
tests: simplify test_evbuffer_add_reference_with_offset
|
|
648ec50e
|
2023-09-21T15:13:31
|
|
Add function evbuffer_add_reference_with_offset()
This is the same as evbuffer_add_reference(), but allows to specify
offset in the @data
v2: rename evbuffer_add_reference_misalign() to evbuffer_add_reference_with_offset()
|
|
8728c983
|
2023-08-02T10:56:35
|
|
evthread: Fix typos in error messages
- s/probaby/probably/
|
|
0797e207
|
2023-08-02T18:37:42
|
|
Fixed misaligned address access
|
|
f39ad1c4
|
2023-08-31T22:38:41
|
|
ws: replace evws_send with evws_send_text/evws_send_binary (ABI breakage) (#1500)
Replace evws_send with evws_send_text, and introduce new API -
evws_send_binary, that can be used to send binary frames.
But note, that this commit breaks the ABI compatibility, but it should be OK,
since there was only alpha release with evws_send, and nobody should rely on
this, and I hope nobody does (we decided to go this way to avoid supporting
deprecated API).
|
|
21d2f5a4
|
2023-08-18T07:51:02
|
|
Fixes #include of winsock.h before winsock2.h
|
|
c9ec6aaf
|
2023-08-01T14:02:34
|
|
Update cmake policy wrt. RPATH on OSX
Previous settings caused install outside CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
to use install_name "lib/" in place of the expected (and useful) "@rpath/".
|
|
3c29a81b
|
2023-07-30T07:44:53
|
|
fixup RPATH computation
Handle cases where ${CMAKE_INSTALL_LIBDIR} is not ${CMAKE_INSTALL_PREFIX}/lib .
Also, preserve user provided ${CMAKE_INSTALL_RPATH} .
fixup for 41a7393f3ecd1e9f58331df4653dac2e6739304e
|
|
66b3904b
|
2023-07-29T22:27:31
|
|
Merge pull request #1498 from mdavidsaver/cleanup-_WIN32_WINNT
|
|
f76bd641
|
2023-07-29T08:12:26
|
|
increment _WIN32_WINNT in evutil.c
|
|
126523f9
|
2023-07-25T11:01:32
|
|
fix prototype of evutil_check_working_afunix_()
mingw w/ gcc 12 defaults to -Wstrict-prototype which complains
about K&R style argument lists.
|
|
a14ff912
|
2023-07-25T10:52:10
|
|
move _WIN32_WINNT defintions before first #include
_WIN32_WINNT and WIN32_LEAN_AND_MEAN need to be defined
before the windows.h is included for the first time.
Avoid the confusion of indirect #include by defining
before any.
|
|
6db587de
|
2023-07-16T15:23:14
|
|
Merge branch 'scorecard-action' (#1494)
* scorecard-action:
docs(readme): add scorecard badge
Enable Scorecard GitHub Action
|
|
e26e0647
|
2023-07-14T14:09:52
|
|
docs(readme): add scorecard badge
|
|
613581bb
|
2023-07-14T13:38:04
|
|
Enable Scorecard GitHub Action
|
|
7b302e7d
|
2023-07-13T21:21:58
|
|
Merge branch 'disable-signalfd'
* disable-signalfd:
Increase timeout for tests
Disable signalfd by default
|
|
3d1d7548
|
2023-07-11T21:29:37
|
|
Increase timeout for tests
Now, it 20min for sequential runs is not enough already, I've tested it
on t3.medium manually and got the same:
Total Test time (real) = 1275.03 sec
And also if I run tests in parallel then I had few failures:
bufferevent/bufferevent_connect_fail:
FAIL /root/libevent/test/regress_bufferevent.c:865: didn't fail? what 128
FAIL /root/libevent/test/regress_bufferevent.c:906: assert(test_ok == 1): 0 vs 1
FAIL /root/libevent/test/regress_bufferevent.c:839: assert(n_events_invoked == 1): 2 vs 1bufferevent/bufferevent_connect_fail_eventcb_defer:
FAIL /root/libevent/test/regress_bufferevent.c:839: assert(n_events_invoked == 1): 2 vs 1bufferevent/bufferevent_connect_fail_eventcb: 3/386 TESTS FAILED. (45 skipped)
v2: Increase timeout more (for netbsd)
|
|
57d9eec6
|
2023-07-10T10:40:49
|
|
Disable signalfd by default
signalfd may behave differently to sigaction/signal, so to avoid
breaking libevent users (like [1], [2]) disable it by default.
[1]: https://github.com/tmux/tmux/pull/3621
[2]: https://github.com/tmux/tmux/pull/3626
Also signalfd is not that perfect:
- you need to SIG_BLOCK the signal before
- blocked signals are not reset on exec
- blocked signals are allowed to coalesce - so in case of multiple
signals sent you may get the signal only once (ok for most of the
signals, but may be a problem for SIGCHLD, though you may call
waitpid() in a loop or use pidfd)
- and also one implementation problem -
sigprocmask is unspecified in a multithreaded process
Refs:
- https://lwn.net/Articles/415684/
- https://ldpreload.com/blog/signalfd-is-useless
Refs: https://github.com/libevent/libevent/issues/1460
Refs: #1342 (cc @dmantipov)
|
|
227510d5
|
2023-07-13T22:20:33
|
|
Fix EVDNS_BASE_DISABLE_WHEN_INACTIVE (#1493)
I faced with strange problem: event loop doesn't exit after dns resolving with
`EVDNS_BASE_DISABLE_WHEN_INACTIVE`.
Stand:
- Ubuntu 22;
- libevent release-2.1.12-stable
- `resolve.conf` contains 2 nameservers;
- I use `evdns_base_new` with `EVDNS_BASE_DISABLE_WHEN_INACTIVE | EVDNS_BASE_INITIALIZE_NAMESERVERS` to avoid OS specific code.
After small investigation, look like events related with dns sockets added to
event_base before `evdns->disable_when_inactive` was initialized. `libevent`
did epoll_ctl(DEL) after resolving completed on the first socket, but the
second socket remained in the `epoll` interest list.
|
|
36ad1006
|
2023-06-26T11:13:58
|
|
#1479: GCC12 error for EVUTIL_FALLTHROUGH
|
|
5ab24bdd
|
2023-06-28T21:33:47
|
|
Merge branch 'becat-fixes'
* becat-fixes:
becat: fix handling positional arguments
becat: handle -T correctly
|
|
2b729238
|
2023-06-28T21:33:41
|
|
becat: fix handling positional arguments
|
|
687124d0
|
2023-06-28T21:33:41
|
|
becat: handle -T correctly
|
|
be4eb97d
|
2023-06-21T22:26:51
|
|
Disable lazy gettimeofday/clock_gettime comparison (#1474)
|
|
2e312772
|
2023-06-20T22:18:41
|
|
Disable lazy gettimeofday/clock_gettime comparison
The benefit of this optimization is questionable for the following
reasons:
- libevent uses CLOCK_MONOTONIC_COARSE which is fast enough (on my
desktop CLOCK_MONOTONIC/CLOCK_MONOTONIC_RAW works 40/50 millions of
ops per second, and CLOCK_MONOTONIC_COARSE is faster)
- libevent has caching of time (EVENT_BASE_FLAG_NO_CACHE_TIME)
So I don't see any reason for using one more caching - lazy comparsion
(whatever you call it).
|
|
13366d27
|
2023-06-13T07:23:10
|
|
Test timer - synchronize clock before tv_timeout calculation.
|
|
4f993028
|
2023-06-13T07:23:10
|
|
Synchronize clock before tv_timeout calculation.
|
|
b30c0d04
|
2023-06-21T03:55:00
|
|
Use mm_* functions in evutil_inet_pton_scope (#1476)
|
|
242f7676
|
2023-06-17T00:16:41
|
|
Enable containing package CFLAGS etc.
Add AC_SUBST of LIBEVENT_FLAGS, LIBEVENT_CPPFLAGS, and LIBEVENT_LDFLAGS so they are relayed from the configure command line to the Makefile
|
|
57bb630c
|
2023-06-20T13:49:37
|
|
Add __cplusplus in ws.h to fix compilation errors when using c++ compiler
|
|
b0194392
|
2023-06-08T23:25:22
|
|
wepoll: replace default malloc/free with libevent mm_ variants (#1472)
This replaces malloc and free in wepoll.c with mm_malloc and mm_free. I'm using event-internal.h instead of mm-internal.h. Using only mm-internal.h in wepoll.c can cause errors regarding the export symbol macros.
|
|
45e24185
|
2023-06-07T22:39:46
|
|
Merge pull request #1470 from mdavidsaver/auto-detect-ssl
Both cmake and autoconf are capable of automatically detecting the presence of OpenSSL and MbedTLS. However, the present build time logic doesn't do this.
With cmake, my starting point is to preserve the reversed logic of `EVENT__DISABLE_OPENSSL` and `EVENT__DISABLE_MBEDTLS`, adding a third option `AUTO` as the new default. I'm following the pattern of this [post on the cmake list](https://cmake.org/pipermail/cmake/2016-October/064342.html). `OFF` and `ON` should continue with their present behaviors.
With autoconf, I've tried to implement what I understand to be conventional behavior. eg. `--enable-openssl` and `--disable-openssl` should continue to have the same effect. The default if neither is passed is equivalent to the new `--enable-openssl=auto`.
I've also added another commit removing what I think is an unnecessary `break` in `m4/libevent_mbedtls.m4`, which I suspect is leftover from some copy+paste from `m4/libevent_openssl.m4`. Surprisingly to me, a `break` outside of any loop does not seem to be treated as an error.
|
|
7cd51ae1
|
2023-06-06T12:43:02
|
|
Add CI tests which require SSL libraries
|
|
9ce6ae78
|
2023-06-05T18:38:22
|
|
Add option to auto-detect OpenSSL and MbedTLS
|
|
71848a23
|
2023-06-06T12:34:08
|
|
libevent_mbedtls.m4 remove extraneous break
Maybe a leftover or copy+paste from a for loop
in libevent_openssl.m4 ?
|
|
bca26524
|
2023-05-25T02:05:28
|
|
Create Security Policy (#1462)
I've created the SECURITY.md file following a GitHub's template and considering the report vulnerability through security advisory, which is a handy new GitHub feature (but it's still in beta and has to be enabled).
Closes #1461
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
|
|
1418e793
|
2023-05-25T10:37:24
|
|
build: fix some new warnings
/opensource/libevent/sample/ws-chat-server.c:253:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
|
|
283a371f
|
2023-05-23T21:46:14
|
|
cmake: log when CMAKE_DEBUG_POSTFIX/CMAKE_BUILD_TYPE is changed
|
|
2112c396
|
2023-05-22T08:21:01
|
|
autotools: fix generating pkg-config files (by substituting CMAKE_DEBUG_POSTFIX)
Fixes: #1459
|
|
4effaee5
|
2023-05-22T00:01:17
|
|
cmake: Fix .pc files when building in Release mode
Don't define CMAKE_DEBUG_POSTFIX as this breaks Release builds, only apply when doing debug builds.
|
|
abc114e3
|
2023-05-21T12:49:34
|
|
Bump default version when git tag is incorrect
Fixes: #1457
|
|
1c06b68f
|
2023-05-21T10:09:50
|
|
Add a note about the last number in NUMERIC_VERSION
|
|
fe9dc8f6
|
2023-05-21T08:54:07
|
|
Merge branch 'release-2.2-pull' - 2.2.1-alpha (#1380)
* release-2.2-pull:
Bump version to 2.2.1
Update ChangeLog and whatsnew for 2.2.1
Update contributors (for 2.2 release)
|
|
8d1388a3
|
2023-05-21T08:40:48
|
|
Bump version to 2.2.1
|
|
4e19e8b4
|
2023-05-20T16:28:28
|
|
Update ChangeLog and whatsnew for 2.2.1
|
|
6ce568c3
|
2022-11-20T23:15:29
|
|
Update contributors (for 2.2 release)
|
|
13ce3045
|
2023-05-20T18:19:04
|
|
Merge branch 'changelog-improvements'
* changelog-improvements:
Generate changelog in a reverse order
Add PR number into the changelog
Use authors of the real patches instead of merge commits
Cleanup changelog.py
|
|
1fb3e6d7
|
2023-05-20T17:40:01
|
|
Generate changelog in a reverse order
|
|
8b87ad48
|
2023-05-20T17:36:58
|
|
Add PR number into the changelog
|
|
fb2e1a69
|
2023-05-20T16:34:55
|
|
Use authors of the real patches instead of merge commits
|
|
c2e917d3
|
2023-05-20T16:29:22
|
|
Cleanup changelog.py
- Use positional argument for revision range
- Remove unused import
- Add some todos
|
|
2c2ffb8d
|
2023-05-20T16:00:09
|
|
Revert "cmake: Only use relative paths for install DESTINATION option (#1405)"
After rebasing I broke the initial intention of this patch, so it simply
should be reverted.
This reverts commit 81c6b8823c1b58d7837e827bb1098aa5f9e5956b.
|
|
5324e482
|
2023-05-16T21:21:48
|
|
Merge branch 'ssl-read-pull' - #1454
* ssl-read-pull:
ssl: add some comments for lack of notify_close
Drop unused le_ssl_ops::err_is_ok
More SSL_read() to fill big buffer
Make bufferevent_set_max_single_read() effect
|
|
49a7ae4c
|
2023-05-16T21:14:34
|
|
ssl: add some comments for lack of notify_close
|
|
e5941b2c
|
2023-05-16T21:16:33
|
|
Drop unused le_ssl_ops::err_is_ok
It is not used anymore since errors are ignored if some progress had
been done.
|
|
ef51444f
|
2023-05-15T10:18:38
|
|
More SSL_read() to fill big buffer
Once SSL_read() only get max 16K bytes (one TLS record).
In case of big buffer, should more SSL_read() to fill the buffer.
Using sample https-client to measure max income MBit/s via nload tool.
Note: set bufferevent_set_max_single_read() by 32K and add the chunk
callback to read out each piece of data.
The client sample do https request a data 900KB (the server don't use
Transfer-Encoding: chunked)
- With origin/master: max income is 2.26 MBit/s
The chunk callback never get a piece of data > 16K.
- With this PR: max income is 2.44 MBit/s
The chunk callback can get some piece of data 32K or more.
|
|
4ab3242d
|
2023-05-15T19:57:38
|
|
Make bufferevent_set_max_single_read() effect
|
|
acfac7ae
|
2022-12-01T18:39:52
|
|
Make dependency paths relocatable
The generated configurations for both CMake and pkg-config included
absolute paths to dependencies (OpenSSL, MbedTLS). This is contrary
to the general CMake advise to create relocatable packages [1].
Additionally, when building both mbedtls and libevent via CMake's
FetchContent in the same project, loading the project would fail with
INTERFACE_INCLUDE_DIRECTORIES property contains path:
"/home/user/project/cmake-build/_deps/mbedtls-build/include"
which is prefixed in the source directory.
The required changes include:
- Adding the outer includes only to the BUILD_INTERFACE solves the
makes the CMake paths relocatable and thus solves the FetchContent
problem.
- Updates to libevent_*.pc.in fixes the relocatable issues for
pkg-config and properly declares currently missing dependencies.
- Using components for linking to OpenSSL (requiring CMake 3.4)
and MbedTLS. The new MbedTLS target names now match the component
names of the MbedTLS' CMake project.
- Use the Threads CMake library reference instead of a direct
reference to support both built-in pthread and -lpthread.
v2 (azat): get back CMAKE_REQUIRED_LIBRARIES
[1] https://cmake.org/cmake/help/v3.25/manual/cmake-packages.7.html#creating-relocatable-packages
|
|
81c6b882
|
2023-05-16T05:07:36
|
|
cmake: Only use relative paths for install DESTINATION option (#1405)
As described in #1404, the explicit use of CMAKE_INSTALL_PREFIX conflicts with using command-line --prefix.
This simply removes all explicit use of CMAKE_INSTALL_PREFIX.
Otherwise this path will be duplicated:
$ cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=inst ..
$ DESTDIR=inst ninja install
...
-- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/util.h
-- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/ws.h
...
Fixes: #1404
Co-authored-by: Jeremy Murphy <jeremymu@blackmagicdesign.com>
|
|
4dee61c0
|
2023-05-14T22:56:02
|
|
Merge remote-tracking branch 'upstream/pr/1397' - #1397
* upstream/pr/1397:
Make sure exported include dirs are correct
Fix Configure_RPATH()
Install LibeventConfig.cmake similar to other cmake files
Use GNUInstallDirs for mapping installation directories
|
|
16be768d
|
2023-01-15T07:49:19
|
|
Make sure exported include dirs are correct
CMake config files don't need any logic to detect the location of
installed headers or DSOs, because these locations are already
determined at project configuration time. They also don't need
to distinguish between build and install trees, because that is
already handled by the generated `LibeventTargets-*.cmake` files.
|
|
41a7393f
|
2022-07-10T13:48:53
|
|
Fix Configure_RPATH()
|
|
be03bf38
|
2021-11-08T06:47:25
|
|
Install LibeventConfig.cmake similar to other cmake files
- Don't destroy cmake file between test case invocations
|
|
1f1593ff
|
2021-10-27T16:40:10
|
|
Use GNUInstallDirs for mapping installation directories
|
|
fe610f2c
|
2023-05-14T22:35:53
|
|
Fix util/mm_calloc_enomem under FreeBSD
It looks like the compiler optimizes this call out with tt_assert():
(gdb) disas /m test_event_calloc_enomem
Dump of assembler code for function test_event_calloc_enomem:
0x0000000000293bb0 <+0>: push %rbp
0x0000000000293bb1 <+1>: mov %rsp,%rbp
0x0000000000293bb4 <+4>: call 0x29f510 <__error@plt>
0x0000000000293bb9 <+9>: movl $0x0,(%rax)
0x0000000000293bbf <+15>: call 0x2990e0 <tinytest_set_test_failed_>
0x0000000000293bc4 <+20>: mov $0x2168e4,%edi
0x0000000000293bc9 <+25>: mov $0x220582,%esi
0x0000000000293bce <+30>: mov $0x20d893,%edx
0x0000000000293bd3 <+35>: mov $0x53a,%ecx
0x0000000000293bd8 <+40>: xor %eax,%eax
0x0000000000293bda <+42>: call 0x29f3b0 <printf@plt>
0x0000000000293bdf <+47>: mov $0x20da72,%edi
0x0000000000293be4 <+52>: mov $0x20f731,%esi
0x0000000000293be9 <+57>: xor %eax,%eax
0x0000000000293beb <+59>: pop %rbp
0x0000000000293bec <+60>: jmp 0x29f3b0 <printf@plt>
While with tt_ptr_op() it does not:
(gdb) disas /m test_event_calloc_enomem
Dump of assembler code for function test_event_calloc_enomem:
0x0000000000293bd0 <+0>: push %rbp
0x0000000000293bd1 <+1>: mov %rsp,%rbp
0x0000000000293bd4 <+4>: push %rbx
0x0000000000293bd5 <+5>: push %rax
0x0000000000293bd6 <+6>: call 0x29f610 <__error@plt>
0x0000000000293bdb <+11>: movl $0x0,(%rax)
0x0000000000293be1 <+17>: mov $0xffffffffffffffff,%rdi
0x0000000000293be8 <+24>: mov $0xffffffffffffffff,%rsi
0x0000000000293bef <+31>: call 0x2a01c0 <calloc@plt>
0x0000000000293bf4 <+36>: test %rax,%rax
0x0000000000293bf7 <+39>: je 0x293c2b <test_event_calloc_enomem+91>
|
|
13f55523
|
2023-05-14T22:29:12
|
|
test: add missing include of arpa/inet.h for ntohs in regress_ws.c
This will fix one warning in FreeBSD
|
|
1f006637
|
2023-05-14T22:03:26
|
|
Merge branch 'build/osx-fixes'
* build/osx-fixes:
Suppress -Wmacro-redefined for htonll/ntohll in OSX
Fix -Wtautological-constant-out-of-range-compare in regress_http under OSX
|
|
6eba967e
|
2023-05-14T22:00:19
|
|
Suppress -Wmacro-redefined for htonll/ntohll in OSX
OSX:
test/regress_ws.c:61:9: warning: 'htonll' macro redefined [-Wmacro-redefined]
#define htonll(x) \
^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/sys/_endian.h:141:9: note: previous definition is here
#define htonll(x) __DARWIN_OSSwapInt64(x)
^
test/regress_ws.c:65:9: warning: 'ntohll' macro redefined [-Wmacro-redefined]
#define ntohll(x) htonll(x)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/sys/_endian.h:140:9: note: previous definition is here
#define ntohll(x) __DARWIN_OSSwapInt64(x)
^
|