Skip to content

Conversation

AaronChen0
Copy link

@AaronChen0 AaronChen0 commented Aug 18, 2024

The merge conflicts are only 2 files, epoll.c and .gitignore.
The change in epoll.c for shadowsocks-android is not needed anymore since minSdk=23.

Please check if the config header files need updates.

fanquake and others added 30 commits April 17, 2023 14:42
Re-arrange so CMake is mentioned first.
Formatting improvements.
doc: minor autoconf/formatting improvements
Also fixes 1 broken link (apologies).
It looks like these jobs are failing to run, because support for
ubuntu-18.04 has been removed entirely, see:
actions/runner-images#6002.

Migrate to ubuntu-20.04.
In the most recent CI run, all the OpenBSD CI jobs failed, i.e
https://github.com/libevent/libevent/actions/runs/4876367885/jobs/8699759831,
this seems to be due to the fact that packages for 7.1 have been removed
from https://cdn.openbsd.org/pub/OpenBSD/ (only has 7.2 & 7.3):
```bash
  Config file: openbsd-7.1.conf
  https://cdn.openbsd.org/pub/OpenBSD/7.1/packages/amd64/: no such dir
  Can't find rsync-3.2.3p0
  Couldn't install rsync-3.2.3p0
  exec shell: bash run.sh showDebugInfo
```

Switch to using 7.2, which is available, so that the CI will run.
Now that the jobs are running again, a number of deprecation warnings
have surfaced
https://github.com/libevent/libevent/actions/runs/4876367881:
```bash
Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2.0.0.
```

Looks like the most straightforward thing todo here is just use the
newer version of the checkout action.

Also move to the v1 tag for the coveralls job, rather than a pinned,
much older version (the latest release is 1.2.5, https://github.com/coverallsapp/github-action/releases).

Same again for actions/cache.
Previously in case when evbuffer_reserve_space() returns > 1, but
it was able to read only 1 IO vector, it will try to read the next one,
got 0 (EOF for mbedTLS or SSL_ERROR_ZERO_RETURN for OpenSSL) and will
trigger EOF, while instead, it should trigger EV_READ w/o EOF and only
after EOF.
* ssl/fix-partial-read:
  ssl: do not triger EOF if some data had been successfully read
  ssl: rename err_is_ok to handshake_is_ok (internal API)
For the CMake release build with -DEVENT__ENABLE_GCC_WARNINGS=ON
and -DEVENT__DISABLE_MM_REPLACEMENT=ON, GCC version 11 and 12 may
complain about possibly uninitialized variable:

In function ‘event_debug_assert_not_added_’,
    inlined from ‘event_assign’ at event.c:2184:2,
    inlined from ‘event_new’ at event.c:2276:6:
cc1: error: ‘ev’ may be used uninitialized [-Werror=maybe-uninitialized]
event.c: In function ‘event_new’:
event.c:361:13: note: by argument 1 of type ‘const struct event *’ to  event_debug_assert_not_added_.part.0’ declared here
  361 | static void event_debug_assert_not_added_(const struct event *ev)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This warning is most likely a false positive and can be silenced
by explicitly disabling inlining for 'event_assign()'.

Signed-off-by: Dmitry Antipov <dantipov@cloudlinux.com>
…r OSX

compiler warning:

    test/regress_http.c:968:38: warning: result of comparison of constant 65536 with expression of type 'enum evhttp_cmd_type' is always true [-Wtautological-constant-out-of-range-compare]
            if (evhttp_request_get_command(req) != EVHTTP_REQ_CUSTOM) {
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~
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)
            ^
* build/osx-fixes:
  Suppress -Wmacro-redefined for htonll/ntohll in OSX
  Fix -Wtautological-constant-out-of-range-compare in regress_http under OSX
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>
- Don't destroy cmake file between test case invocations
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.
* 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
…nt#1405)

As described in libevent#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: libevent#1404
Co-authored-by: Jeremy Murphy <jeremymu@blackmagicdesign.com>
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
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.
It is not used anymore since errors are ignored if some progress had
been done.
* 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
…libevent#1405)"

After rebasing I broke the initial intention of this patch, so it simply
should be reverted.

This reverts commit 81c6b88.
dependabot bot and others added 25 commits June 24, 2024 10:59
Bumps the github-actions group with 3 updates in the / directory: [coverallsapp/github-action](https://github.com/coverallsapp/github-action), [ossf/scorecard-action](https://github.com/ossf/scorecard-action) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `coverallsapp/github-action` from 2.2.3 to 2.3.0
- [Release notes](https://github.com/coverallsapp/github-action/releases)
- [Commits](coverallsapp/github-action@3dfc556...643bc37)

Updates `ossf/scorecard-action` from 2.3.1 to 2.3.3
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](ossf/scorecard-action@0864cf1...dc50aa9)

Updates `github/codeql-action` from 3.25.3 to 3.25.10
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@d39d31e...23acc5c)

---
updated-dependencies:
- dependency-name: coverallsapp/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
…vent#1669)

DragonFly BSD changed the time unit for TCP keep-alive from milliseconds to seconds since v5.8 and Solaris 11.4 added `TCP_KEEPIDLE`, `TCP_KEEPINTVL`, and `TCP_KEEPCNT` with time units in second while Solaris <11.4 still use `TCP_KEEPALIVE_THRESHOLD` and `TCP_KEEPALIVE_ABORT_THRESHOLD` with time units in millisecond.

Currently, we don't differentiate among DragonFly BSD versions but set the keepalive options with seconds, which will result in unexpected behaviors on DragonFlyBSD <5.8. This PR intends to fix the wrong usage of time units of TCP keepalive options on DragonFly BSD <5.8 and consolidate the logic of time units conversion for TCP keepalive across platforms.

In addition, this PR introduces a new custom macro for determining Solaris 11.4. This macro is expected to help us implement some new features for `libuv` using some abilities that only exist on Solaris 11.4 and other mainstream platforms in the future, considering that Oracle developed and released Solaris 11.4 to replenish plenty of features on Solaris that have already been implemented on other UNIX-like OSs but missing from Solaris <11.4, also bring a good deal of new features.
### References

- [Change tcp keepalive options from ms to seconds (DISRUPTIVE)](https://lists.dragonflybsd.org/pipermail/commits/2019-July/719125.html)
- [DragonFly BSD 5.8 release notes](https://www.dragonflybsd.org/release58/)
- [DragonFly TCP](https://man.dragonflybsd.org/?command=tcp&section=4)
- [Solaris 11.3 TCP](https://docs.oracle.com/cd/E86824_01/html/E54777/tcp-7p.html)
- [Solaris 11.4 TCP](https://docs.oracle.com/cd/E88353_01/html/E37851/tcp-4p.html)
- [Solaris 11.4 release notes](https://docs.oracle.com/cd/E37838_01/html/E60973/)

Signed-off-by: Andy Pan <i@andypan.me>
Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.25.10 to 3.25.11
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@23acc5c...b611370)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
* Fix potential Null pointer dereference in test-time.c

* add err path

* code review: free events before base

---------

Co-authored-by: icy17 <1061499390@qq.com>
…ent#1682)

* Use evutil_socket_t instead in http server sample and handle 64 bit Windows

* Update http-server.c

* consistently using EV_SOCK_FMT for Windows compatibility

* code review: fix missing symbol strsignal

* Add evutil_strsignal() helper instead of strsignal() macro

---------

Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Azat Khuzhin <azat@libevent.org>
* Fix potential Null pointer dereference in test-closed.c

* add err path

* code review: goto err after evutil_socketpair failure

* code review: goto err for event_config_new failure

---------

Co-authored-by: icy17 <1061499390@qq.com>
Co-authored-by: Azat Khuzhin <azat@libevent.org>
In theory, we could be more strict, since there is only a subset of allowed characters:
> ```
> tchar          = "!" / "#" / "$" / "%" / "&" / "'" / "*"
>                 / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
>                 / DIGIT / ALPHA
>                 ; any VCHAR, except delimiters
> ```

But I'd skip such verification, unless there is a legitimate interest (versus performances).

Fixes: libevent#1686
This will make it work for Firefox, which uses "Connection: keep-alive, Upgrade"
Reimplemented our own evutil_ascii_strcasestr function (same as
non-portable strcasestr)
Bumps the github-actions group with 2 updates: [ossf/scorecard-action](https://github.com/ossf/scorecard-action) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `ossf/scorecard-action` from 2.3.3 to 2.4.0
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](ossf/scorecard-action@dc50aa9...62b2cac)

Updates `github/codeql-action` from 3.25.11 to 3.25.15
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@b611370...afb54ba)

---
updated-dependencies:
- 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-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
@Mygod
Copy link

Mygod commented Aug 19, 2024

Hmm, is this fix contained in release-2.1.12-stable? Maybe we don't need to merge the latest master yet.

@AaronChen0
Copy link
Author

Right. release-2.1.12-stable contains a fix too.
shadowsocks-android built successfully with v2.1.12, and the debug apk works in my phone.

Check #4 and https://github.com/AaronChen0/shadowsocks-android/tree/libevent_v2.1.12.

@Mygod
Copy link

Mygod commented Aug 20, 2024

Great. I've merged the other one. Thank you very much!

@Mygod Mygod closed this Aug 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.