4013 Commits

Author SHA1 Message Date
Azat Khuzhin
61fa7b7d80
buffer: make evbuffer_prepend() of zero-length array no-op
Refs: #774
(cherry picked from commit c4fbae3ae6166dddfa126734edd63213afa14dce)
2019-05-25 21:25:10 +03:00
Azat Khuzhin
6a3dd717bc
Merge branch 'evbuffer-empty-chain-handling'
* evbuffer-empty-chain-handling:
  buffer: do not rely on ->off in advance_last_with_data()
  buffer: fix evbuffer_remove_buffer() with empty chain in front
  test: verify content of the buffer in evbuffer/remove_buffer_with_empty*

(cherry picked from commit b69524c004fb68bcd9475e7aa61f5a7cdb45d304)
2019-05-25 21:25:10 +03:00
Seong-Joong Kim
6602a97d7d
Remove needless check for arc4_seeded_ok
(cherry picked from commit 16a151df5c59c0539d06465172742cc50751ea77)
2019-05-25 21:25:09 +03:00
Enji Cooper
5e39750de8
Fix typos: warnigns -> warnings
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
(cherry picked from commit 91dad75f7d04c2bef05bdd1dca7c29340ce33900)
2019-05-25 21:25:09 +03:00
Enji Cooper
c5cf4a5cb5
Fix typos in a comment describing the purpose of VersionViaGit.cmake
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
(cherry picked from commit 0b468bb07e3476d06907ca6c8e5c24bbb05e31a4)
2019-05-25 21:25:09 +03:00
Enji Cooper
00ba9fa299
Define _GNU_SOURCE properly/consistently per autoconf
Although `_GNU_SOURCE` can be defined as an arbitrary #define per the
glibc docs [1], it's best to define it in a manner consistent with the way
that autoconf defines it, i.e., `1`.

While this shouldn't matter in most cases, it does when the headers from
other projects follow the poorly defined GNU convention implemented by
autoconf and are included after the libevent's util.h header. An example
failure with clang, similar to the failure I encountered, is as follows:
```
$ printf "#define _GNU_SOURCE\n#define _GNU_SOURCE 1" | clang -c -x c -
<stdin>:2:9: warning: '_GNU_SOURCE' macro redefined [-Wmacro-redefined]
        ^
<stdin>:1:9: note: previous definition is here
        ^
1 warning generated.
```

This happened when compiling python [2] with a stale homebrew util.h file from
libevent (which admittedly would not happen in a correct libevent install, as the
header should be installed under /usr/local/include/event2/util.h). However, if
both headers had been combined (which is more likely), it would have failed as
shown above.

Removing the ad hoc definition unbreaks compiling python's pyconfig.h.in header
when included after util.h from libevent.

1. http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
2. https://github.com/python/cpython/blob/master/configure.ac#L126

Closes: #773 (cherry-picked)

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
(cherry picked from commit 5f87be42f0ae0126938624a1419a572607078217)
2019-05-25 21:25:09 +03:00
Yury Korzhetsky
3d1a7a1d45
Don't loose top error in SSL
Closes: #775 (cherry-picked)
(cherry picked from commit a30d6d85219ea80c16df6da4f6a9430254e5a0da)
2019-05-25 21:25:09 +03:00
Azat Khuzhin
ca76ebb0d6
Ignore bitrise branches for travis-ci/appvyeor [ci skip]
(cherry picked from commit b34192bae6f511b91a2fc01409676b2df2fd8a31)
2019-05-25 21:25:09 +03:00
Azat Khuzhin
5991f5b22c
Update link to the appveyor project
Since the migration request has been hanged for a while, let's switch it
for now without beauty API URL.

Fixes: #555
(cherry picked from commit 2fccb967c52e9f5373494df2773c684dee5ef973)
2019-05-25 21:25:09 +03:00
Azat Khuzhin
5362f74995
Match definition with prototype for bufferevent_socket_set_conn_address_fd_()
Fixes: #772
Fixes: b29207dc ("Eliminate fd conversion warnings and introduce EVUTIL_INVALID_SOCKET (windows)")
(cherry picked from commit 5722e13b871063f13912a6ccafe4c94e1b3b41c5)
2019-05-25 21:25:08 +03:00
Azat Khuzhin
a45f6733bd
Revert "test: avoid regress hanging in macOS"
After we started to use kill() over raise() everything should work just
fine.

This reverts commit a86f89d333d870e6714bd28c695ba1774df3d7f5.

Fixed-in: 728c5dc1 ("Use kill() over raise() for raising the signal (fixes osx 10.14 with kqueue)")
Fixes: #747
(cherry picked from commit 14eb903ba31987d24357abd05923677d194fedae)
2019-05-25 21:25:08 +03:00
Azat Khuzhin
3db5296bb1
Use kill() over raise() for raising the signal (fixes osx 10.14 with kqueue)
On OSX 10.14+ the raise() uses pthread_kill() (verified with dtruss) and
by some reason signals that has been raised with pthread_kill() do not
received by kqueue EVFILT_SIGNAL.

While on OSX 10.11 the raise()/pthread_kill() uses plain kill() and
everything work just fine (linux also does the same, but instead of
kill() it uses tgkill())

Here is a simple reproducer that installs alarm to show that the signal
does not received by the kqueue backend:
  https://gist.github.com/azat/73638b8e3b0fa563a20dadcca9e652a1

Refs: #747
Fixes: #765
(cherry picked from commit 728c5dc11f55b4ba5f518812833eab5a2cc3d550)
2019-05-25 21:25:08 +03:00
Nathan French
9108414032
Merge pull request #769 from sungjungk/fix-return-handling
Add error-handling routine for arc4_seed()

(cherry picked from commit 8d5b14d42888416404a24f8060b514f8258b7f17)
2019-05-25 21:25:08 +03:00
Nathan French
fcdda24b3a
Added DNS header mask definitions.
Currently, we do a lot of data munging with manual hex. This is ugly
and can lead to bugs. I defined the following:

_QR_MASK    0x8000U
_OP_MASK    0x7800U
_AA_MASK    0x0400U
_TC_MASK    0x0200U
_RD_MASK    0x0100U
_RA_MASK    0x0080U
_Z_MASK     0x0040U
_AD_MASK    0x0020U
_CD_MASK    0x0010U
_RCODE_MASK 0x000fU

So that we can more easily twiddle flags.

v2: make evdns flag masks unsigned literal
Closes: #756 (cherry-picked)
(cherry picked from commit fb134939160a4baad89fd4ab20c49afd617057e3)
2019-05-25 21:25:08 +03:00
Azat Khuzhin
d44eb473cd
Merge 'official/pr/761' into patches-2.1 -- changelog fixes
* official/pr/761:
  changelog: fix extraneous "g" suffix on commit hashes in 2.1.9
  changelog: fix evrpc typo "evprc" in 2.1.9
2019-02-11 00:32:54 +03:00
Pierce Lopez
bf0cf6ec21 changelog: fix extraneous "g" suffix on commit hashes in 2.1.9 2019-02-10 16:12:11 -05:00
Pierce Lopez
8b6f67a467 changelog: fix evrpc typo "evprc" in 2.1.9 2019-02-10 16:09:15 -05:00
Azat Khuzhin
9c75c24caa
Merge branch 'release-2.1.9-beta-pull' into patches-2.1
* release-2.1.9-beta-pull:
  Bump version to 2.1.9-beta everywhere
  Bump ChangeLog
  Bump AUTHORS section
  ...

Tested on (cmake/autotools):
- ubuntu
- freebsd
- osx
- windows
- netbsd
- solaris
- centos

Closes: #744
2019-02-10 16:23:58 +03:00
Azat Khuzhin
900f5c4503
Bump version to 2.1.9-beta everywhere 2019-02-10 16:22:56 +03:00
Azat Khuzhin
b5126dbe0c
Bump ChangeLog 2019-02-10 16:22:56 +03:00
Azat Khuzhin
9e0a1e06cd
Bump AUTHORS section 2019-02-10 16:22:56 +03:00
Azat Khuzhin
e0e5d53b21
test/dns: in solaris under EMFILE devpoll does not dispatch
(cherry picked from commit 3ce38f6d2d74edcacfe17d612c611ae35e97acfc)
2019-02-10 14:34:08 +03:00
Azat Khuzhin
7f16190227
cmake: fix checking of devpoll backend (like in autotools, by devpoll.h existence)
(cherry picked from commit 8e87de3c24cad940516f49aa0466cfe53fa042bf)
2019-02-10 14:33:57 +03:00
Azat Khuzhin
5a26e7bd07
test/dns: in solaris under EMFILE the error is EAI_FAIL
(cherry picked from commit d234902da713cb722596f6bf66bb0dde8a3842dc)
2019-02-03 18:58:41 +03:00
Azat Khuzhin
ce4e2b7b8c
test/ssl/bufferevent_wm: explicitly break the loop once client/server received enough
There can be tricky cases (that can be reproduced by reducing
SO_RCVBUF/SO_SNDBUF to 6144, on linux, and be aware, since linux doubles
this const), when there is still write event pending, although we read
enough.

This should be fixed in a more sophisticated way, but to backport the
patch, let's simply break the loop manually.

The ssl/bufferevent_wm originally failed on solaris.

(cherry picked from commit ae9b285d2d7c9b898049072c157d50769d8014ea)
2019-02-03 18:58:41 +03:00
Azat Khuzhin
e66078a043
Eliminate fd conversion warnings and introduce EVUTIL_INVALID_SOCKET (windows)
windows has intptr_t instead of regular int.

Also tt_fd_op() had been introduced, since we cannot use tt_int_op() for
comparing fd, since it is not always int.

(cherry picked from commit b29207dceee33832bb28ab103a833df6a2fd29d3)
2019-02-02 15:18:08 +03:00
Azat Khuzhin
048bee0a12
evmap: use approparite type for changes to avoid warnings under windows
(cherry picked from commit 74c10894117f9dd2b230ec8d0e30d41c08df3b45)
2019-02-02 15:18:08 +03:00
Azat Khuzhin
283da04721
test/et/et: use evutil_socket_t* over int* for pointer to the pair
Next code will not work correctly under win x64:
  evutil_socket_t very_long_pair_name[2];
  int *pair = very_long_pair_name; // <-- accessing the second word of the first element

Because sizeof(evutil_socket_t) == sizeof(intptr_t) == 8

P.S. in the 5334762f another test had been fixed instead of the one that
really fails.

Fixes: 5334762f ("test/et/et: fix it by using appropriate type for the SOCKET (evutil_socket_t)")
Refs: #750
(cherry picked from commit 0791a17204ff70bbea92520352a0c6e8d185fa4b)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
fa193d128f
appveyor: disable verbosity of MSBuild
(cherry picked from commit e2e82241d182807b154dad5c546d9ef4581eb489)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
aee0fcd57c
Merge branch 'win64-fixes'
* win64-fixes:
  test/et/et: fix it by using appropriate type for the SOCKET (evutil_socket_t)
  test/et/et: verify return codes
  appveyor: switch to new VS/MinGW and x64

(cherry picked from commit 97a3e7f5802ce1baa3c959905e312cab2bebf4bf)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
1d9319c7fb
win32select: print an error in case of failure
(cherry picked from commit 8882f4fd60aa61fe1caf8b372989427a9872c3b9)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
3ebd7edd02
Add OS-specific exclude patterns of the branch names for the CI
(cherry picked from commit f88b8946f3da988f7aa80e36681037b4f474840e)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
8eb0084214
s/http-server: fix cleanup routines
Fixes: bdd71f18 ("s/http-server: graceful cleanup")
(cherry picked from commit afdccee9b3648a76e119fb4d5f922191cd09d748)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
eb7b472b1f
Merge branch 'http-EVHTTP_CON_READ_ON_WRITE_ERROR-fixes-v2'
* http-EVHTTP_CON_READ_ON_WRITE_ERROR-fixes-v2:
  http: try to read existing data in buffer under EVHTTP_CON_READ_ON_WRITE_ERROR
  test: add logging for http/read_on_write_error and rearrange code
  http: do not call deferred readcb if readcb is not set

Refs: #749
(cherry picked from commit 7bfe93886d7fccad2d9a6c76cf47c47d3668f9d1)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
9f02b39ce1
Merge branch 'travis-ci-osx-fixes'
* travis-ci-osx-fixes:
  travis-ci/osx: switch to xcode 10.1, since 9.4 is not compatible with gcc-8
  travis-ci/osx: install gcc and fix CC

(cherry picked from commit 5613bfb8dcd70ea1c89d04b550d9f97958cc48d2)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
170debc782
test: adjust expecting error for getaddrinfo() under EMFILE
When getaddrinfo() cannot allocate file descriptor glibc/musl-libc on
linux report EAI_SYSTEM error. But this is not true for freebsd libc [1]
(and hence apple libc [2]), they report EAI_NONAME error instead, so
adjust expectation.

  [1]: https://github.com/freebsd/freebsd/blob/master/lib/libc/net/getaddrinfo.c
  [2]: https://opensource.apple.com/source/Libc/

Refs: #749
Refs: https://github.com/libevent/libevent/issues/749#issuecomment-457838159
(cherry picked from commit 4ffc7116177230ad2b8b94d51bbf89a14dc83687)
2019-02-02 15:18:07 +03:00
Azat Khuzhin
982a7e889b
test/nonpersist_readd: use assert helpers
To debug failure under win32 in appveyor:
  https://ci.appveyor.com/project/nmathewson/libevent/builds/21559140/job/dn16qdo1j6sr497t#L1620

(cherry picked from commit 91a2f1346e80c67526261ba81c8f3b3736107bcb)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
a95cc9e39f
rpc: use *_new_with_arg() to match function prototype
In 755fbf16c ("Add void* arguments to request_new and reply_new
evrpc hooks") this new functions had been introduced, but newer used,
what for? So let's use them.

(cherry picked from commit 99b231b0d875bc0814b0e4a940b6c9890d2a7754)
2019-02-02 15:18:06 +03:00
Luke Dashjr
2ccd00a68b
http: Preserve socket error from listen across closesocket cleanup
Closes: #738 (cherry-picked)
(cherry picked from commit 28d7221b851093611c65b5961e138403dd7332b6)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
c8b3ec1711
cmake: support static runtime (MSVC)
Fixes: #737
(cherry picked from commit 246f44041e0782f728fa5ff2d39113005a1ab02d)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
61fb055a43
appveyor: cover static libs for MSVC
(cherry picked from commit 51945fd9399d2392010456a6d2c49815bc8f938e)
2019-02-02 15:18:06 +03:00
baixiangcpp
339f76c0dc
fix a comment error
Closes: #736 (cherry-picked)
(cherry picked from commit 972da7c838b54c224889525a5cb9561f4024aff2)
2019-02-02 15:18:06 +03:00
Fredrik Strupe
c264028cd3
cmake: Fix some typos in option descriptions
(cherry picked from commit f33c2ce5f89bc334230867f37d07dbfd5e3921bd)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
d30e7bbac9
http: fix connection retries when there more then one request for connection
We should not attemp to establishe the connection if there is retry
timer active, since otherwise there will be a bug.

Imagine next situation:
  con = evhttp_connection_base_new()
  evhttp_connection_set_retries(con, 2)
  req = evhttp_request_new()
  evhttp_make_request(con, req, ...)
  # failed during connecting, and timer for 2 second scheduler (retry_ev)

Then another request scheduled for this evcon:
  evhttp_make_request(con, req, ...)
  # got request from server,
  # and now it tries to read the response from the server
  # (req.kind == EVHTTP_RESPONSE)
  #
  # but at this point retry_ev scheduled,
  # and it schedules the connect again,
  # and after the connect will succeeed, it will pick request with
  # EVHTTP_RESPONSE for sending and this is completelly wrong and will
  # fail in evhttp_make_header_response() since there is no
  # "http_server" for this evcon

This was a long standing issue, that I came across few years ago
firstly, bad only now I had time to dig into it (but right now it was
pretty simple, by limiting amount of CPU for the process and using rr
for debug to go back and forth).

(cherry picked from commit f3f7aa5afff2c0be4a1a299a1a7d0a64558abc23)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
a8155c62d8
Do not check O_NONBLOCK for invalid fds
Fixes: 6f988ee1 ("Merge branch 'check-O_NONBLOCK-in-debug'")
(cherry picked from commit 9d3a415a99bbc6a7e0f0b12ae3c6c5c7e4613cf1)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
f9c5d17b0a
test-fdleak: fix memory leaks
Fixes: #726
(cherry picked from commit e5ec52d100ee94af14753513f4b4594e94eb02e1)
2019-02-02 15:18:06 +03:00
Azat Khuzhin
412be74a86
travis-ci: do not run coveralls with clang (SIGSEGV)
This will fix coveralls badge

See: https://travis-ci.org/libevent/libevent/jobs/458590276#L1425
(cherry picked from commit 3e6bec7c1aa416e3e6e85c7bda1bdc98b778d23c)
2019-02-02 15:18:05 +03:00
Azat Khuzhin
260db3410a
Add mailmap
(cherry picked from commit 196e3a7b2bceaca5bee1914a92b9cfed41d8917d)
2019-02-02 15:18:05 +03:00
Azat Khuzhin
f9b592aa27
test: add TT_RETRIABLE for http/cancel_by_host_no_ns
Could fail from time to time in travis-ci:
  https://travis-ci.org/libevent/libevent/jobs/458554097#L1702

Follow-up-for: fe5b0719 ("Mark a lot of flacky tests with TT_RETRIABLE (for linux/win32 only)")
(cherry picked from commit 1d2ef90032bc842bc2e295ee4adce3408b6d85da)
2019-02-02 15:18:05 +03:00
Azat Khuzhin
d156c6085a
appveyor: enable parallel build
(cherry picked from commit 1a79fd38aa3bd34d941c4949ad3e4ba09aa8142b)
2019-02-02 15:18:05 +03:00