Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 85a0ec9b | 2024-05-06 08:50:36 | be: make the code in bufferevent_socket_connect() more reliable There is one icky in case for windows: if (sa) { #ifdef _WIN32 if (bufferevent_async_can_connect_(bev)) { bufferevent_setfd(bev, fd); r = bufferevent_async_connect_(bev, fd, sa, socklen); if (r < 0) goto freesock; bufev_p->connecting = 1; result = 0; goto done; - } else + } else { #endif r = evutil_socket_connect_(&fd, sa, socklen); if (r < 0) // Previosly this line was executed // regardless of bufferevent_async_can_connect_(), but the case under // bufferevent_async_can_connect_() always does goto, so it is 100% the // same code, but just to make it more cleaner goto freesock; +#ifdef _WIN32 + } +#endif } | ||
| 3201009b | 2024-05-06 08:38:53 | Revert "Remove dead code from bufferevent_socket_connect" That wasn't the dead code, since the `r` could be `2` in case of `ECONNREFUSED`, and it should trigger errorcb not the writecb. This is actually questionable should be call errorcb at all in case of connect() returns an error immediately, but I guess the reason was to make it compatible with others, ECONNREFUSED can be returned only for specific cases and only on BSD (AFAIK). While for instance EHOSTUNREACH is not. And after this change now all tests are passed on FreeBSD. Well, sometimes few tests fails due to timing issues, but in general looks good. Since even all tests in parallel passed: $ rm -f /tmp/libevent*log; bin/regress --list-tests | awk '/^ / { print $1 }' | xargs -I{} -P100 bash -c 'n={}; bin/regress --no-fork --verbose $n |& tee /tmp/libevent-test-${n//\//_}.log' |& grep -F ' [FAILED' |& tee /tmp/libevent-tests.log And having green CI is crucial for libevent, not only because it is a rule of thumb for all projects, but also because in case of failures it will retry on and on, which will cause CI stuck. Fixes: bufferevent/bufferevent_connect_fail Fixes: bufferevent/bufferevent_connect_fail_eventcb Fixes: bufferevent/bufferevent_connect_fail_eventcb_defer This reverts commit 56e121310954cbee2310c5eb2a3000115186563d. Refs: https://github.com/libevent/libevent/pull/1100 | ||
| 3f7c1cba | 2024-05-05 21:03:21 | be: add a comment for handling ECONNREFUSED in bufferevent_readcb() Fixes: 3189eb000b6d8751223061930a019f85c284f985 ("be_sock: handle readv() returns ECONNREFUSED (freebsd 9.2)") | ||
| c6a74ee0 | 2024-05-06 09:13:15 | Merge branch 'test/fixes' -- more small fixes * test/fixes: test: mark http/timeout_read_server as retriable test: reset some static vars to avoid affecting other tests test: fix printing number of retries for FAILED message test: add debugging for bufferevent/bufferevent_connect_fail_eventcb* test: suppress logging for buffer/add_file_leak1 | ||
| d538f41f | 2024-05-05 21:12:14 | test: add debugging for bufferevent/bufferevent_connect_fail_eventcb* | ||
| 2d4d1747 | 2024-05-05 22:15:56 | test: suppress logging for buffer/add_file_leak1 Warnings from this test should be ignored: [warn] evbuffer_file_segment_materialize: mmap(5, 0, 0) failed: Invalid argument | ||
| 0f51ba66 | 2024-05-06 09:10:15 | test: mark http/timeout_read_server as retriable | ||
| ba97d947 | 2024-05-05 21:35:46 | test: reset some static vars to avoid affecting other tests | ||
| 479b5ed6 | 2024-05-05 21:30:01 | test: fix printing number of retries for FAILED message | ||
| 6bb41ed0 | 2024-05-05 20:22:43 | Merge branch 'test/fix-reports' * test/fix-reports: test: add proper message in case of test failure test: fix RETRYING message (add missing group prefix) | ||
| 93a76aa2 | 2024-05-05 20:20:27 | test: add proper message in case of test failure Right now it is impossible to understand what had been failed, but after: $ regress thread/conditions_simple thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [RETRYING thread/conditions_simple (attempts left 2, delay 1 sec)] thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [RETRYING thread/conditions_simple (attempts left 1, delay 1 sec)] thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [RETRYING thread/conditions_simple (attempts left 0, delay 1 sec)] thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [conditions_simple FAILED] [FAILED thread/conditions_simple (attempts made -1)] 1/1 TESTS FAILED. (0 skipped) | ||
| d5745413 | 2024-05-05 20:15:22 | test: fix RETRYING message (add missing group prefix) Before: $ regress thread/conditions_simple thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [RETRYING conditions_simple (attempts left 2, delay 1 sec)] After: $ regress thread/conditions_simple thread/conditions_simple: [forking] FAIL /src/le/libevent/test/regress_thread.c:385: assert(n_signal == 0): 1 vs 0 [RETRYING thread/conditions_simple (attempts left 2, delay 1 sec)] | ||
| 5d45f4d9 | 2024-05-04 18:25:17 | Simplifying apple-cmake-job | ||
| ccf4c74d | 2024-05-04 12:40:36 | Add ChangeLog-2.1/ChangeLog (aka 2.2) into dist package | ||
| d241fcab | 2024-05-04 20:33:18 | Add Privacy Manifest for App Store submissions Doc: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api From the API list, the libevent library only uses: - mach_absolute_time, but that one is avoided with HAVE_POSIX_MONOTONIC (default) instead of HAVE_MACH_MONOTONIC - fstat and stat in evbuffer_file_segment_new, which is covered by third-party SDK usage (0A2A.1) - fstat and stat in evutil_read_file_, which is used to read the "/etc/resolv.conf" and "/etc/hosts" files, for which there are no available supporting reasons | ||
| 7ede5af6 | 2024-05-04 18:04:14 | Updating deprecated GitHub actions (#1629) * Updating deprecated GitHub actions * code review: use commit hash for actions | ||
| ac96656c | 2024-05-01 14:33:53 | Bump github/codeql-action in the github-actions group Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action). Updates `github/codeql-action` from 3.24.10 to 3.25.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4355270be187e1b672a7a1c7c7bae5afdc1ab94a...d39d31e687223d841ef683f52467bd88e9b21c14) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> | ||
| 534da76d | 2024-05-04 12:48:57 | Merge pull request #1641 from Coeur/coeur/apple-cmake-job Adding apple-cmake-job for an iOS/tvOS/visionOS/watchOS build | ||
| f516e399 | 2024-05-04 17:42:26 | Fix brew path on Apple Silicon (#1633) * Fix brew path on Apple Silicon * code review: `brew --prefix openssl` * code review: correct mbedtls path * code review: cmake does support autodetection of OPENSSL_ROOT_DIR | ||
| 3c744cee | 2024-05-01 14:55:29 | fix linux retrying cmake | ||
| 0428771a | 2024-05-01 23:17:54 | Remove redundant condition in function:event_base_once | ||
| 71108830 | 2024-05-02 13:16:04 | using xcode-version: latest-stable for xros support | ||
| b7fb04e8 | 2024-05-02 12:57:55 | Adding apple-cmake-job for an iOS/tvOS/watchOS build | ||
| eec47a67 | 2024-04-30 15:59:58 | Fix typos (#1634) | ||
| 64decd48 | 2024-04-29 13:51:22 | Fix potential Null pointer dereference in dns-example.c (#1601) | ||
| a584efaa | 2024-04-22 14:47:34 | Fix potential Null pointer dereference in time-test.c | ||
| aef201a9 | 2024-04-29 13:35:33 | Change ident for EVFILT_USER to 0 and add a test (#1582) Conventionally, ident for EVFILT_USER is set to 0 to avoid collision of file descriptors, which is what other renowned networking frameworks like netty(java), mio(rust), gnet(go), swift-nio(swift), etc. do currently. Co-authored-by: Azat Khuzhin <azat@libevent.org> | ||
| cbbf209c | 2024-04-29 13:31:34 | Support SO_REUSEPORT on FreeBSD, DragonFly and Solaris (#1624) ## References - [The SO_REUSEPORT socket option on Linux](https://lwn.net/Articles/542629/) - [DragonFly Release 3.6](https://www.dragonflybsd.org/release36/) - [FreeBSD 12.0-RELEASE Release Notes](https://www.freebsd.org/releases/12.0R/relnotes/) - [SO_REUSEPORT on Solaris 11.4](https://docs.oracle.com/cd/E88353_01/html/E37843/setsockopt-3c.html) Co-authored-by: Azat Khuzhin <azat@libevent.org> | ||
| a9426941 | 2024-04-28 13:16:54 | Fix CMake Deprecation Warning | ||
| 73c0349e | 2024-04-29 13:16:58 | Fix evutil_parse_sockaddr_port documentation (#1628) In some IDE like Xcode, the list is interpreted as markdown instead of plain text | ||
| 71d41cdf | 2024-04-22 06:39:35 | build: Add `Iphlpapi` to `Libs.private` in `*.pc` files on Windows It has been required since https://github.com/libevent/libevent/pull/923 at least for the `if_nametoindex` call. | ||
| 1e6c0e72 | 2024-04-12 21:36:38 | Do not set TCP keepalive on Unix sockets This commit disables the property of TCP keepalive on Unix domain sockets, because they essentially serve no purpose here, except for causing problems on Windows and macOS systems. Fixes #1615 | ||
| 147298a2 | 2024-04-24 11:14:47 | Fix some comments Signed-off-by: dockercui <dockercui@aliyun.com> | ||
| 6074d558 | 2024-04-17 10:36:47 | Avoid calling read(2) on eventfd on each event-loop wakeup Register the eventfd with EPOLLET to enable edge-triggered notification where we don't need to read the data from the eventfd for every wakeup event. When the eventfd counter reaches the maximum value of the unsigned 64-bit, we rewind the counter and retry again. This optimization saves one system call on each event-loop wakeup, which eliminates the extra latency for epoll as the EVFILT_USER filter does for the kqueue. | ||
| e0a4574b | 2024-04-15 07:41:48 | Bump the github-actions group with 5 updates Bumps the github-actions group with 5 updates: | Package | From | To | | --- | --- | --- | | [actions/cache](https://github.com/actions/cache) | `3` | `4` | | [nick-fields/retry](https://github.com/nick-fields/retry) | `2` | `3` | | [coverallsapp/github-action](https://github.com/coverallsapp/github-action) | `1.2.5` | `2.2.3` | | [ossf/scorecard-action](https://github.com/ossf/scorecard-action) | `2.1.2` | `2.3.1` | | [github/codeql-action](https://github.com/github/codeql-action) | `2.2.4` | `3.24.10` | Updates `actions/cache` from 3 to 4 - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v3...v4) Updates `nick-fields/retry` from 2 to 3 - [Release notes](https://github.com/nick-fields/retry/releases) - [Changelog](https://github.com/nick-fields/retry/blob/master/.releaserc.js) - [Commits](https://github.com/nick-fields/retry/compare/v2...v3) Updates `coverallsapp/github-action` from 1.2.5 to 2.2.3 - [Release notes](https://github.com/coverallsapp/github-action/releases) - [Upgrade guide](https://github.com/coverallsapp/github-action/blob/main/UPGRADE.md) - [Commits](https://github.com/coverallsapp/github-action/compare/09b709cf6a16e30b0808ba050c7a6e8a5ef13f8d...3dfc5567390f6fa9267c0ee9c251e4c8c3f18949) Updates `ossf/scorecard-action` from 2.1.2 to 2.3.1 - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/e38b1902ae4f44df626f11ba0734b14fb91f8f86...0864cf19026789058feabb7e87baa5f140aac736) Updates `github/codeql-action` from 2.2.4 to 3.24.10 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/17573ee1cc1b9d061760f3a006fc4aac4f944fd5...4355270be187e1b672a7a1c7c7bae5afdc1ab94a) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: nick-fields/retry dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: coverallsapp/github-action dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> | ||
| 80e25c02 | 2024-04-09 11:57:42 | Enable dependabot for github actions | ||
| a4ec4cbe | 2024-04-09 11:55:37 | Hashpin workflows that use sensitive permisisons | ||
| 9de85b58 | 2024-04-05 20:42:37 | fix WSOptions enum value and extended payload length bug | ||
| 6e390911 | 2024-04-10 17:42:01 | Fix potential Null pointer dereference in regress_buffer.c | ||
| 74217832 | 2024-04-10 15:47:57 | Fix potential Null pointer dereference in regress.c | ||
| d6e88352 | 2024-04-10 17:45:03 | Fix potential Null pointer dereference in regress_et.c | ||
| d45dca43 | 2024-04-10 17:39:36 | Fix potential Null pointer dereference in regress_thread.c | ||
| 2bdf1737 | 2024-04-10 16:18:27 | Fix potential Null pointer dereference in regress_finalize.c | ||
| 17796a2d | 2024-04-10 15:32:54 | Fix potential Null pointer dereference in regress_http.c | ||
| f9526e13 | 2024-04-10 15:16:21 | Fix potential NULL pointer dereference in regress_bufferevent.c | ||
| fc48803d | 2024-04-15 15:02:27 | Fix potential Null pointer dereference in regress_zlib.c (#1597) Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com> | ||
| c6e8f175 | 2024-04-07 19:37:55 | Edit logo path to match new website directory | ||
| 39073df8 | 2024-03-30 21:44:50 | evutil: don't call memset before memcpy In `evutil_parse_sockaddr_port`, it would `memset` the `out` to zero, however, the `memset` is unnecessary before `memcpy`, and may cause undefined behavior if the `outlen` is invalid. This should close #1573. | ||
| 4fd07f0e | 2024-03-12 21:56:35 | Upgrade vmactions to use linux runners (#1570) Co-authored-by: neil <neilgit@neilpang.com> | ||
| 539f73e3 | 2024-02-20 09:30:22 | Fix leak in evbuffer_add_file() on empty files Found by oss-fuzz, after coverage had been improved in google/oss-fuzz#11257 v2: adjust test v3: fix for windows (_get_osfhandle() crashes when called on closed fd) v4: fix for EVENT__DISABLE_MM_REPLACEMENT | ||
| b9e1fe74 | 2024-03-11 21:00:18 | ci: disable netbsd and freebsd due to lack of runners For example for openbsd-cmake-job (7.2, NONE) This request was automatically failed because there were no enabled runners online to process the request for more than 1 days. And maybe this will fix the macos builds. | ||
| 0054b9aa | 2024-03-11 17:12:14 | Enable the full TCP KeepAlive mechanism on Windows (#1568) #1532 implemented the full support of TCP Keep-Alives on UNIX-like OS's while leaving a `TODO` for Windows. This PR intends to resolve that `TODO`. ## References - [SIO_KEEPALIVE_VALS Control Code](https://learn.microsoft.com/en-us/windows/win32/winsock/sio-keepalive-vals) - [IPPROTO_TCP socket options](https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options) - [TCP_KEEPINVTL and TCP_KEEPIDLE - Socket Keep Alives not working](https://cygwin.com/pipermail/cygwin/2020-June/245436.html) - [Cygwin: tcp: Support TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVL](https://sourceware.org/pipermail/cygwin-cvs/2020q3/014473.html) - [Add cross-platform support for keep-alive socket options](https://github.com/dotnet/corefx/pull/29963/files) | ||
| 9c8860ec | 2024-03-11 15:50:43 | chore: remove repetitive words Signed-off-by: tgolang <seekseat@aliyun.com> | ||
| e66df92c | 2024-03-07 16:19:11 | Accept SOCK_NONBLOCK/SOCK_CLOEXEC in type argument of socketpair (#1567) Setting `SOCK_NONBLOCK` and `SOCK_CLOEXEC` in the `type` argument of `socketpair()` is widely supported across UNIX-like OS: Linux, *BSD, Solaris, etc., as is the `socket()`. This will conserve several extra system calls, we should use it where available. ### References - [socketpair(2) on Linux](https://man7.org/linux/man-pages/man2/socketpair.2.html#HISTORY) - [socketpair(2) on FreeBSD](https://man.freebsd.org/cgi/man.cgi?query=socketpair&sektion=2#DESCRIPTION) - [socketpair(2) on DragonFly](https://man.dragonflybsd.org/?command=socketpair§ion=2) - [socketpair(2) on NetBSD](https://man.netbsd.org/socketpair.2#DESCRIPTION) - [socketpair(2) on OpenBSD](https://man.openbsd.org/socketpair.2) - [socketpair(3C) on Solaris](https://docs.oracle.com/cd/E88353_01/html/E37843/socketpair-3c.html) Changelog: - Set SOCK_NONBLOCK and SOCK_CLOEXEC in the type argument of socketpair - Avoid EPROTOTYPE on macOS and OpenBSD - Eliminate the warnings about unused variables - Add some comments | ||
| f2b3ce6b | 2024-03-03 23:10:48 | Merge pull request #1558 from azat/ratelimit-fixes Fix few issues found by oss-fuzz in bufferevent ratelimits | ||
| e4b87327 | 2024-02-20 08:58:04 | Fix integer-overflow in ev_token_bucket_cfg_new Found by oss-fuzz, after coverage had been improved in https://github.com/google/oss-fuzz/pull/11257 v2: better check (found by CI for windows) | ||
| 15e643d0 | 2024-03-03 14:49:34 | Fix pread detection for cmake builds Otherwise it will use lseek()+read() - suboptimal | ||
| 92109747 | 2024-03-02 10:45:49 | Simplify TCP_KEEPALIVE_ABORT_THRESHOLD settings on Solaris | ||
| c4fb0f76 | 2024-02-20 08:58:04 | Fix divide-by-zero in ev_token_bucket_get_tick_ Found by oss-fuzz, after coverage had been improved in https://github.com/google/oss-fuzz/pull/11257 | ||
| ec8d7a5a | 2024-02-20 08:54:14 | ci: fix ABI check (#1510) | ||
| 7eddd526 | 2024-02-20 07:56:24 | Patch abi-compliance-checker to avoid endless loop | ||
| 798547ac | 2024-02-20 07:51:37 | Force abi-check to use DWARF 3 | ||
| e4869625 | 2024-02-20 08:01:23 | Fix abi_check.sh by excluding .abi-check from cp cp: cannot copy a directory, './.abi-check', into itself, '/le/src/.abi-check/work/abi-check/src/libevent/current/.abi-check' | ||
| 5bdfab76 | 2024-02-18 21:36:30 | Debug abi check | ||
| f37c667c | 2024-02-18 20:28:49 | Add ABI check without deploy for PRs | ||
| 551df0b2 | 2023-09-03 08:15:07 | ci: try to fix ABI check by using newer version of ubuntu Looks like after upgrading ubuntu from 18.04 (that has 1.9 version of lvc abi tools) to 20.04 (that has 1.11) the abi-check started to timeout (works longer then 6 hours, while usually few minutes, and sometimes even faster was enough). Unlikely upgrading ubuntu will help, since 22.04 and 20.04 has the same version, but still, let's try. Refs: #1463 | ||
| 0dbd3eb3 | 2024-02-18 16:06:28 | tests: add test for EV_SIGNAL with timeout Refs: https://github.com/libevent/libevent-book/issues/12 | ||
| 5cec3417 | 2024-02-19 08:21:11 | Make Infer static analyzer happy (#1554) | ||
| ed35b30f | 2023-10-23 16:52:19 | Fix two compiler errors for unused variable and undefined function In buffer.c a variable "flags" and a label "done" are defined but never used if "EVENT__HAVEMMAP" is not defined. The code does not work on platforms which do not provide the function `socketpair()`. Introduce EVENT__HAVE_SOCKETPAIR flag which determines if `socketpair()` or `evutil_ersatz_socketpair()` is used. | ||
| 95ed33e3 | 2024-02-18 22:08:54 | Follow up for HTTP chunk size check (#1552) | ||
| f9939490 | 2024-02-18 21:19:41 | Fix leak in evconnlistener_new_async() Fixes: https://github.com/libevent/libevent/issues/414 | ||
| 317911a1 | 2024-02-18 20:39:12 | Fix util/monotonic_prc_fallback under FreeBSD Looks like there was garbage, since evutil_configure_monotonic_time_() does not reset evutil_monotonic_timer structure, while in case of fallback it uses two fields from it: - last_time - adjust_monotonic_clock Fixes: https://github.com/libevent/libevent/issues/1495 | ||
| 3cf996f0 | 2024-02-18 19:53:58 | evutil: add a comment why no NULL check in evutil_inet_pton_scope() | ||
| 5412b2c3 | 2024-02-18 19:40:00 | bufferevent_ssl: fix freeing ctx in case of error in bufferevent_ssl_new_impl | ||
| c9793baa | 2024-02-18 19:39:50 | bufferevent_ssl: proper NULL checks | ||
| 6e4ea6c3 | 2024-02-18 19:31:12 | evthread: fix NULL dereference in evthread_setup_global_lock_() | ||
| 2f27523e | 2024-02-18 18:22:21 | bufferevent_ssl: do not return NULL from upcast /src/le/libevent/bufferevent_ssl.c:863: error: Null Dereference pointer `bev_ssl` last assigned on line 855 could be null and is dereferenced at line 863, column 6. 861. r2 = start_writing(bev_ssl); 862. 863. if (bev_ssl->underlying) { ^ 864. if (events & EV_READ) 865. BEV_RESET_GENERIC_READ_TIMEOUT(bev); | ||
| 53034936 | 2024-02-18 18:16:38 | bufferevent_filter: do not allow upcast() to return NULL (fixes infer warning) /src/le/libevent/bufferevent_filter.c:234: error: Null Dereference pointer `bevf` last assigned on line 231 could be null and is dereferenced at line 234, column 6. 232. EVUTIL_ASSERT(bevf); 233. 234. if (bevf->bev.options & BEV_OPT_CLOSE_ON_FREE) { ^ 235. /* Yes, there is also a decref in bufferevent_decref_. 236. * That decref corresponds to the incref when we set | ||
| d9b5fe31 | 2024-02-18 18:03:38 | evrpc: proper NULL checks (API function return value added) Note, that in order to do this evrpc_hook_add_meta() should have return value, so this is a minor ABI change, which should not affect C ABI, but still worth to mention. Anyway this will be done in 2.2 release and unlikely RPC subsystem is popular. | ||
| 05ed7c8c | 2024-02-18 18: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. | ||
| 8feed7f1 | 2024-02-18 19:26:47 | http: forbid chunks size with 0X prefix Co-authored-by: Ben Kallus <49924171+kenballus@users.noreply.github.com> | ||
| 87cdcc18 | 2024-02-18 15:24:58 | http: change error for corrupted requests to 400 Bad Request Previously it was 413 Request Entity Too Large, which was odd. | ||
| f1632e59 | 2024-02-18 15:24:33 | http: check first byte of the chunk for 0x as well | ||
| e60d039d | 2024-02-18 15:02:59 | tests: add a test for malformed chunks v2: fix test for win32 (and it more correct in general) | ||
| 92ea8476 | 2024-02-18 08: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-18 12: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-24 13:19:23 | install DESTINATION use CMAKE_INSTALL_<dir> | ||
| b698e6c4 | 2024-01-23 04: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-18 16: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-14 21: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-14 13: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-15 12: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-13 15:54:49 | ci: disable ABI check temporary (I hope that "temporary") Refs: https://github.com/libevent/libevent/issues/1463 | ||
| 9d4853b3 | 2024-01-13 20: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-06 14: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-06 13: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-06 13:15:58 | Switch to windows-latest (just in case) | ||
| 7658b788 | 2024-01-06 00: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-26 14:53:23 | time-test: use event_new for compatibility with future libevent (#1525) | ||
| 4c38de8c | 2023-11-26 20:52:32 | Fix -Walloc-size (#1526) Co-authored-by: Azat Khuzhin <azat@libevent.org> |