3871 Commits

Author SHA1 Message Date
Carlo Marcelo Arenas Belón
506df426db autotools: confirm openssl is working before using
latest versions of macOS provide pkg-config and libraries for an ancient
version of openssl as part of the system, but no headers
2017-09-11 01:17:59 +03:00
Carlo Marcelo Arenas Belón
63c4bf78d6 test: fix 32bit linux regress 2017-09-01 15:50:36 -07:00
Carlo Marcelo Arenas Belón
0ec5edde50 autotools: pass $(OPENSSL_INCS) for samples (FTBFS macOS)
if OpenSSL is in a non standard location, need to pass that information
to any sample that needs it

Closes: #550
2017-08-22 11:28:41 +03:00
Carlo Marcelo Arenas Belón
5698cff73d always define EV_INT16_MIN
somehow missing from 043ae7481f4a73b0f48055a0260afa454f02d136
2017-08-17 12:16:56 -07:00
Redfoxmoon
94e5cc84d5 Add configure check for midipix
Fixes: #540
2017-08-15 12:10:33 +03:00
James Synge
27934f0b39 Fix race in access to ev_res from event loop with event_active()
Detected using ThreadSanitizer, resolved by capturing the value
of ev_res in a local variable while the event is locked, then
passing that captured variable to the callback.

TSAN report:
  I0728 14:35:09.822118   WARNING: ThreadSanitizer: data race (pid=815501)
  I0728 14:35:09.822186     Write of size 2 at 0x7b2c00001bf2 by thread T80 (mutexes: write M1110835549570434736):
  I0728 14:35:09.822248       #0 event_active_nolock_ libevent/event.c:2893:14 (0a2b90577e830d775300664df77d0b91+0x1fdab28)
  I0728 14:35:09.822316       #1 event_active libevent/event.c:2858:2 (0a2b90577e830d775300664df77d0b91+0x1fdd10e)
  I0728 14:35:09.822379       #2 Envoy::Event::TimerImpl::enableTimer(std::chrono::duration<long, std::ratio<1l, 1000l> > const&) envoy/source/common/event/timer_impl.cc:24:5 (0a2b90577e830d775300664df77d0b91+0x459fa0)
  ...

  I0728 14:35:09.824146     Previous read of size 2 at 0x7b2c00001bf2 by main thread:
  I0728 14:35:09.824232       #0 event_process_active_single_queue libevent/event.c:1646:33 (0a2b90577e830d775300664df77d0b91+0x1fdf83d)
  I0728 14:35:09.824350       #1 event_process_active libevent/event.c (0a2b90577e830d775300664df77d0b91+0x1fd9ad8)
  I0728 14:35:09.824445       #2 event_base_loop libevent/event.c:1961 (0a2b90577e830d775300664df77d0b91+0x1fd9ad8)
  I0728 14:35:09.824550       #3 Envoy::Event::DispatcherImpl::run(Envoy::Event::Dispatcher::RunType) envoy/source/common/event/dispatcher_impl.cc:166:3 (0a2b90577e830d775300664df77d0b91+0x4576d9)
  ...

Fixes: #543 (pull-request)
2017-08-15 00:09:04 +03:00
Azat Khuzhin
a10a6f4ed9 Remove check against passed bufferevent in bufferevent_socket_connect()
It is a bit confusing to check against the result of EVUTIL_UPCAST(),
because it can return not NULL for NULL pointers, but for even though
with bufferevent we are fine (because bufferevent is the first field in
bufferevent_private), there are no checks for "bufev" in bufferevent's
API, so just remove it to make it generic.

Fixes: #542
Signed-off-by: Ivan Maidanski <i.maidanski@samsung.com>
Signed-off-by: Azat Khuzhin <a3at.mail@gmail.com>
2017-08-14 23:16:12 +03:00
Azat Khuzhin
b26996a05d Fix wrong assert in evbuffer_drain()
"chain" cannot be NULL here because we have at least one chain (we
handle empty buffer separatelly) and hence loop will be executed at
least once.

Link: 841ecbd961 (commitcomment-23631347)
Signed-off-by: Ivan Maidanski <i.maidanski@samsung.com>
Signed-off-by: Azat Khuzhin <a3at.mail@gmail.com>
2017-08-14 23:11:03 +03:00
Azat Khuzhin
e83443ec67 Merge remote-tracking branch 'official/pr/527' -- documentation fixes
* official/pr/527:
  Fix a few trivial documentation typos
  Clarify event_free() documentation regarding pending/active events
2017-07-16 21:40:18 +03:00
Ondřej Kuzník
cf7f5b0dc4 Fix tests with detached builds
Closes: #524
2017-07-16 21:35:05 +03:00
Nikolay Edigaryev
c3a61a13d7 Fix a few trivial documentation typos 2017-07-07 01:24:26 +05:00
Nikolay Edigaryev
2137886d2f Clarify event_free() documentation regarding pending/active events
Currently it's not clear as to whether "first make it non-pending and
non-active" sentence requires user to take some action (e.g. call event_del(),
which event_free() already does internally) or just describes what this
function does from the developer point of view.
2017-07-07 01:22:43 +05:00
Nikolay Edigaryev
808524252f Document some obvious cases where a function might also return NULL
Closes: #525
2017-07-02 13:16:59 +03:00
Azat Khuzhin
cd285e425a Fix event_debug_logging_mask_ exporting on win32 2017-05-29 22:26:16 +03:00
Azat Khuzhin
1771ec0f4a Vagrant test 2017-05-29 22:13:28 +03:00
Azat Khuzhin
3ac4f176ee Revert "Make event_debug_get_logging_mask_() real symbol (win32)"
This reverts commit 5f17c12de021c070501e97268e595da82bf38879.
2017-05-29 22:07:57 +03:00
Azat Khuzhin
5f17c12de0 Make event_debug_get_logging_mask_() real symbol (win32)
I cannot made it work without this, even though dumpbin shows that that symbol
exists in the event_core.dll, event_extra.dll failed to compile:
==> win:      Creating library C:/vagrant/.cmake-vagrant/lib/Debug/event_extra.lib and object C:/vagrant/.cmake-vagrant/lib/Debug/event_extra.exp
==> win: http.obj : error LNK2001: unresolved external symbol _event_debug_logging_mask_ [C:\vagrant\.cmake-vagrant\event_extra_shared.vcxproj]
==> win: C:\vagrant\.cmake-vagrant\bin\Debug\event_extra.dll : fatal error LNK1120: 1 unresolved externals [C:\vagrant\.cmake-vagrant\event_extra_shared.vcxproj]
==> win: Done Building Project "C:\vagrant\.cmake-vagrant\event_extra_shared.vcxproj" (default targets) -- FAILED.

And dumpbin:
  sh-4.1$ /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 12.0/VC/bin/amd64/dumpbin.exe /EXPORTS ./bin/Debug/event_core.dll
M
    202   C9 00059A3C event_debug_logging_mask_ = _event_debug_logging_mask_
2017-05-29 22:01:35 +03:00
Azat Khuzhin
ce3af533f1 Fix visibility issues under (mostly on win32)
Refs: #511
Fixes: 7182c2f561570cd9ceb704623ebe9ae3608c7b43 ("cmake: build SHARED and
STATIC libraries (like autoconf does)")
2017-05-29 22:01:33 +03:00
Azat Khuzhin
2773a5ed5e cmake: set CMP0054 to NEW to avoid variables over expansion (since cmake 3.8)
==> win: CMake Warning (dev) at CMakeLists.txt:782 (elseif):
==> win:   Policy CMP0054 is not set: Only interpret if() arguments as variables or
==> win:   keywords when unquoted.  Run "cmake --help-policy CMP0054" for policy
==> win:   details.  Use the cmake_policy command to set the policy and suppress this
==> win:   warning.
==> win:
==> win:   Quoted variables like "MSVC" will no longer be dereferenced when the policy
==> win:   is set to NEW.  Since the policy is not set the OLD behavior will be used.
==> win: This warning is for project developers.  Use -Wno-dev to suppress it.
2017-05-29 21:59:01 +03:00
Azat Khuzhin
8b29b13679 cmake: fix building bench/bench_cascade under win32 (missing getopt)
Because of typo in cmake, now rewrote to make it less error prone (since even
for non-win32 there are variables overlap).
2017-05-29 21:59:01 +03:00
Azat Khuzhin
346f8e1708 cmake: avoid requiring cmake 3.1 on win32 for dns-example
Avoid using target_sources() from cmake 3.1, just pass needable sources as
list.
2017-05-29 21:59:01 +03:00
Azat Khuzhin
74a2f5935a le-proxy: fix compiling under win32 (because of no "inline" in C)
Include <util-internal.h> for regular "inline", since it is used everywhere.
2017-05-29 21:49:58 +03:00
Azat Khuzhin
d22e12eefa http-connect: exit on error 2017-05-28 16:38:55 +03:00
Azat Khuzhin
15da23cfdb test: do not use .fieldname in structure initializations (fixes win32)
Fixes: #497
2017-05-01 21:57:23 +03:00
Azat Khuzhin
8d89c21258 Add missing print-winsock-errors.c into dist archive
Refs: #497
2017-05-01 21:55:00 +03:00
Maximilian Brunner
00ae45fe53 le-proxy: add missing return statement (UAF)
Refs: #501501501501501501501501501
2017-04-30 02:00:23 +03:00
José Luis Millán
0b4b0efdb8 Return from event_del() after the last event callback termination
Delete the event from the queue before blocking for the current
event callback termination.

Ensures that no callback is being executed when event_del() returns,
hence making this function a secure mechanism to access data which is
handled in the event callack.

Fixes: #236
Fixes: #225
Refs: 6b4b77a
Fixes: del_wait
2017-04-30 01:40:42 +03:00
Azat Khuzhin
5ff83989f3 test: cover that after event_del() callback will not be scheduled again
Refs: #236
Refs: #225
2017-04-30 01:35:03 +03:00
Gonçalo Ribeiro
f988c5ca0e Correct URL for the libevent logo 2017-04-29 23:37:20 +03:00
David Benjamin
c6c74ce265 Explicitly call SSL_clear when reseting the fd.
If reconnecting the via BEV_CTRL_SET_FD, bufferevent_openssl.c expects
OpenSSL to reuse the configuration state in the SSL object but retain
connection state. This corresponds to the SSL_clear API.

The code currently only calls SSL_set_connect_state or
SSL_set_accept_state. Due to a quirk in OpenSSL, doing this causes the
handshake to implicitly SSL_clear the next time it is entered. However,
this, in the intervening time, leaves the SSL object in an odd state as
the connection state has not been dropped yet. This behavior also does
not appear to be documented by OpenSSL.

Instead, call SSL_clear explicitly:
https://www.openssl.org/docs/manmaster/man3/SSL_clear.html
2017-04-21 19:19:04 -04:00
Dominic Chen
92cc0b9c3d bufferevent: refactor to use type check macros 2017-04-13 16:13:11 -04:00
Azat Khuzhin
266f43af77 Fix arc4random_addrandom() detecting and fallback (regression)
But this is kind of hot-fix, we definitelly need more sane arc4random
compat layer.

Fixes: #488
Introduced-in: 6541168 ("Detect arch4random_addrandom() existence")
2017-03-27 17:04:33 +03:00
Azat Khuzhin
177e2171cb Make event_count macros cleaner
Fixes: #489
2017-03-26 21:42:19 +03:00
Xiang Zhang
2e52bace9f fix evutil_make_internal_pipe_'s comment that fd[0] for read and f[1] for write 2017-03-18 15:25:20 +03:00
Azat Khuzhin
b1e8a4138f cmake: use APPEND during exporting targets (for old cmake)
On centos with cmake 2.8.12.2:
  CMake Error at cmake/AddEventLibrary.cmake:92 (export):
    export called with target "event_extra_shared" which requires target
    "event_core_shared" that is not in the export list.

    If the required target is not easy to reference in this call, consider
    using the APPEND option with multiple separate calls.

But on newer cmake I guess everything is ok.

Fixes: 7182c2f561570cd9ceb704623ebe9ae3608c7b43 ("cmake: build SHARED
and STATIC libraries (like autoconf does)")
2017-03-14 13:37:59 +03:00
Azat Khuzhin
d84f020545 Merge branch 'win32-fixes'
This patchset fixes win32 builds after some previous patches (referenced
in particular commits), and also removes some quirks for win32.

* win32-fixes:
  test: do not return void
  log/win32: fix exporting extern variable
  log-internal: missing extern "C"
  log: remove USE_GLOBAL_FOR_DEBUG_LOGGING
  cmake: Export missing symbols for win32
  cmake: eliminate EVENT_BUILDING_REGRESS_TEST, since we link with shared libs
  test: windows doesn't have WNOWAIT
  cmake: clean not used #defines from event-config.h
  cmake: add <pthread.h> only for non-win32
2017-03-14 13:31:02 +03:00
Azat Khuzhin
8acfb0cd21 test: do not return void 2017-03-14 13:21:16 +03:00
Azat Khuzhin
92cf234b0c log/win32: fix exporting extern variable
==> win:   C:\vagrant\log.c(73): error C2370: 'event_debug_logging_mask_' : redefinition; different storage class [C:\vagrant\.cmake-vagrant\event_core_shared.vcxproj]
2017-03-14 12:55:40 +03:00
Azat Khuzhin
a9c2116fac log-internal: missing extern "C" 2017-03-14 08:47:18 +03:00
Azat Khuzhin
49dcf4d554 log: remove USE_GLOBAL_FOR_DEBUG_LOGGING
Fixes: 9081b66c9c1446b11c0052bade799fafb460efed ("Export symbols for
-fvisibility=hidden (under cmake)")
2017-03-14 08:47:18 +03:00
Azat Khuzhin
48ead58e77 cmake: Export missing symbols for win32 2017-03-14 08:47:18 +03:00
Azat Khuzhin
30f2a969e8 cmake: eliminate EVENT_BUILDING_REGRESS_TEST, since we link with shared libs
Before 7182c2f561570cd9ceb704623ebe9ae3608c7b43 ("cmake: build SHARED
and STATIC libraries (like autoconf does)") it links with *.c.
2017-03-14 00:33:37 +03:00
Azat Khuzhin
a4b1828d6d test: windows doesn't have WNOWAIT
Fixes: 66a4eb0c3ae3b1f22b084b2d3aeb5c872f37efbd ("Check for WNOWAIT in
waitpid() in runtime (not in cmake/configure)")
2017-03-14 00:04:26 +03:00
Azat Khuzhin
d5e1087044 cmake: clean not used #defines from event-config.h
- _LARGE_FILES: we have it in evconfig-private.h.in, drop from event-config.h
- EVENT___FILE_OFFSET_BITS: remove it for now
- EVENT__const
2017-03-13 22:13:13 +03:00
Azat Khuzhin
2d2299cf7a cmake: add <pthread.h> only for non-win32
Fixes: b2b4b4d74e78a3e4fe7a74224d1e6aada5bde351 ("cmake: add <pthread.h>
into CMAKE_REQUIRED_INCLUDES for sizeof(pthread_t)")
2017-03-13 22:09:27 +03:00
Azat Khuzhin
882f537c40 cmake: fix pkgconfig generation (copy-paste typo) 2017-03-13 21:41:10 +03:00
Azat Khuzhin
489991a2b2 Merge branch 'cmake-missing-bits'
This patchset adds next missing things (in compare to autotools):
- pkgconfig
- event_pthreads/event_openssl
- compile shared/static libraries always

And some fixes, because it will not build after fixing other things:
- export missing symbols for cmake (-fvisibility=hidden)

* cmake-missing-bits:
  cmake: support visibility for AppleClang too
  cmake: fix export absolute path and relative path and cleanup a bit
  cmake: generate and install pkgconfig files
  cmake: build SHARED and STATIC libraries (like autoconf does)
  cmake: add missing event_openssl/event_pthreads libraries
  Export symbols for -fvisibility=hidden (under cmake)

Refs: #246
2017-03-13 21:08:07 +03:00
Azat Khuzhin
805e1aa819 cmake: support visibility for AppleClang too
Defaults apple linker behaviour is -two_levelnamespace, and you cannot
use "-undefined suppress" with it, so let's link non event_core with
event_core library to avoid undefined symbols.
2017-03-13 16:25:30 +03:00
Azat Khuzhin
fd5a3fc036 cmake: fix export absolute path and relative path and cleanup a bit
Remove next vars, since I don't think that somebody want to change it:
- bin
- lib
- include

And fix exports problem:
  CMake Error: INSTALL(EXPORT "LibeventTargets") given absolute DESTINATION "/usr/lib/cmake/libevent" but the export references an installation of target "event_core_static" which has relative DESTINATION "lib".
2017-03-13 16:20:40 +03:00
Azat Khuzhin
86c7357525 cmake: generate and install pkgconfig files
Fixes: #443
2017-03-13 16:20:40 +03:00