Sync from SUSE:SLFO:Main libevent revision 93846b878b1ac0625dbe50f797680726

This commit is contained in:
Adrian Schröter 2024-05-03 14:56:33 +02:00
commit 7b8b8f39c5
11 changed files with 2362 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,52 @@
From 1eefbe38f6a7266e1489765317f4e89489856fc1 Mon Sep 17 00:00:00 2001
From: Dan Rosen <mergeconflict@google.com>
Date: Wed, 17 Apr 2019 15:44:59 -0400
Subject: [PATCH 2/2] evwatch: fix race condition
There was a race between event_base_loop and evwatch_new (adding a
prepare/check watcher while iterating over the watcher list). Only
release the mutex immediately before invoking each watcher callback,
and reacquire it immediately afterwards (same as is done for normal
event handlers).
---
event.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/event.c b/event.c
index 5e41ae04..c6eb175c 100644
--- a/event.c
+++ b/event.c
@@ -2012,11 +2012,12 @@ event_base_loop(struct event_base *base, int flags)
event_queue_make_later_events_active(base);
/* Invoke prepare watchers before polling for events */
- EVBASE_RELEASE_LOCK(base, th_base_lock);
prepare_info.timeout = tv_p;
- TAILQ_FOREACH(watcher, &base->watchers[EVWATCH_PREPARE], next)
+ TAILQ_FOREACH(watcher, &base->watchers[EVWATCH_PREPARE], next) {
+ EVBASE_RELEASE_LOCK(base, th_base_lock);
(*watcher->callback.prepare)(watcher, &prepare_info, watcher->arg);
- EVBASE_ACQUIRE_LOCK(base, th_base_lock);
+ EVBASE_ACQUIRE_LOCK(base, th_base_lock);
+ }
clear_time_cache(base);
@@ -2033,10 +2034,11 @@ event_base_loop(struct event_base *base, int flags)
/* Invoke check watchers after polling for events, and before
* processing them */
- EVBASE_RELEASE_LOCK(base, th_base_lock);
- TAILQ_FOREACH(watcher, &base->watchers[EVWATCH_CHECK], next)
+ TAILQ_FOREACH(watcher, &base->watchers[EVWATCH_CHECK], next) {
+ EVBASE_RELEASE_LOCK(base, th_base_lock);
(*watcher->callback.check)(watcher, &check_info, watcher->arg);
- EVBASE_ACQUIRE_LOCK(base, th_base_lock);
+ EVBASE_ACQUIRE_LOCK(base, th_base_lock);
+ }
timeout_process(base);
--
2.23.0

1
baselibs.conf Normal file
View File

@ -0,0 +1 @@
libevent-2_1-7

BIN
libevent-2.1.12-stable.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,11 @@
-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEEnjrIOieXS4TRs0AduGCGhI74aG0FAl8BwzYACgkQuGCGhI74
aG31WAf/ZNi3PMWw/N6L03Ga4jD3HVPjfY60zGM3MAIT//4hyEhSBfdvutSawt/R
GLOFXAEpdVWi6tojKiKUPKco9mEkLUcY9C/ZTosD1F8tXGM1IEogK7AMrJo8hg1/
4fW3tnIiU6JFcuPTIL1a5ReaOPhUCfDiikqx6LkWYuh8fNn2iKcG4Ev6NaSTqGaE
sQyshQb0Y1yYSImSjEJQr32d4JxN0z4n03aHruMJ4MHZhrUDzhmQbqLh0KQYybP5
G9jmeUqMMQJzlTLn1xCIrQehUeUVKg+WtXfDvWKfbSCyRVJfWO3RsHQvzoyflzuj
Nor16y9qAleMVO4i0kHfhGuyCEwx+Q==
=nkKm
-----END PGP SIGNATURE-----

3
libevent-rpmlintrc Normal file
View File

@ -0,0 +1,3 @@
# libevent-devel-static is a proper name in this package, in analogy to
# libevent-devel
addFilter("libevent-devel-static.*: W: shlib-policy-missing-lib")

883
libevent.changes Normal file
View File

@ -0,0 +1,883 @@
-------------------------------------------------------------------
Sun Jan 15 22:06:53 UTC 2023 - Cristian Rodríguez <crrodriguez@opensuse.org>
- Disable the select backend, this can be easily done by lying
to configure. This is done due to:
* using fd number > 1024 on an fd_set results in a runtime
fortify source assertion, preventing further doom.
* select will not be changed to handle fd > 1024.
* this limit is unreasonable low for this century.
-------------------------------------------------------------------
Tue Feb 9 08:18:41 UTC 2021 - Dominique Leuenberger <dimstar@opensuse.org>
- Drop insserv_prereq and fillup_prereq macros: there are no
pre-scripts that would justify these dependencies.
-------------------------------------------------------------------
Tue Jul 28 23:30:12 UTC 2020 - David Disseldorp <ddiss@suse.com>
- Update to 2.1.12 stable
* buffer: do not pass NULL to memcpy() from evbuffer_pullup()
* http: fix undefined-shift in EVUTIL_IS*_ helpers
* Check error code of evhttp_add_header_internal() in
evhttp_parse_query_impl()
* http: fix EVHTTP_CON_AUTOFREE in case of timeout
* evdns: Add additional validation for values of dns options
* Fix memory corruption in EV_CLOSURE_EVENT_FINALIZE with debug enabled
* increase segment refcnt only if evbuffer_add_file_segment() succeeds
* evdns: fix a crash when evdns_base with waiting requests is freed
* event_base_once: fix potential null pointer threat
* http: do not assume body for CONNECT
* evbuffer_add_file: fix freeing of segment in the error path
* Fix checking return value of the evdns_base_resolv_conf_parse()
* Support EV_CLOSED on linux for poll(2)
* Parse IPv6 scope IDs.
* evutil_time: detect and use _gmtime64_s()/_gmtime64()
* bufferevent: allow setting priority on socket and openssl type
* Fix EV_CLOSED detection/reporting
* Revert "Warn if forked from the event loop during event_reinit()"
-------------------------------------------------------------------
Tue Sep 24 12:03:16 UTC 2019 - Michał Rostecki <mrostecki@opensuse.org>
- Add upstream patches with the feature of "prepare" and "check"
watchers. That feature is needed by envoy-proxy:
* 0001-evwatch-Add-prepare-and-check-watchers.patch
* 0002-evwatch-fix-race-condition.patch
-------------------------------------------------------------------
Tue Aug 20 22:27:52 UTC 2019 - David Disseldorp <ddiss@suse.com>
- Update to 2.1.11 stable
* Fix ABI breakage that had been introduced in 2.1.10. Strictly speaking
this release breaks ABI again to make it compatible with <= 2.1.9.
+ See git commit 18104973 for more details
* evdns: add new options -- so-rcvbuf/so-sndbuf
* various autotools and cmake build changes
* buffer: fix possible NULL dereference in evbuffer_setcb() on ENOMEM
* Warn if forked from the event loop during event_reinit()
* evutil: set the have_checked_interfaces in evutil_check_interfaces()
* https-client: correction error checking
-------------------------------------------------------------------
Fri Aug 2 07:05:45 UTC 2019 - Martin Liška <mliska@suse.cz>
- Use FAT LTO objects in order to provide proper static library.
-------------------------------------------------------------------
Mon Jul 1 09:40:17 UTC 2019 - Andreas Schwab <schwab@suse.de>
- Fix name of library package (bsc#1138369)
-------------------------------------------------------------------
Mon May 27 16:37:28 UTC 2019 - David Disseldorp <ddiss@suse.com>
- Update to 2.1.10 stable
* evdns: add DNS_OPTION_NAMESERVERS_NO_DEFAULT /
EVDNS_BASE_NAMESERVERS_NO_DEFAULT
* Add support for EV_TIMEOUT to event_base_active_by_fd
* kqueue: Avoid undefined behaviour.
* Prevent integer overflow in kq_build_changes_list.
* evdns: fix lock/unlock mismatch in evdns_close_server_port()
* Protect min_heap_push_ against integer overflow.
* le-proxy: initiate use of the Winsock DLL
* Fix leaks in error path of the bufferevent_init_common_()
* buffer: make evbuffer_prepend() of zero-length array no-op
* Don't loose top error in SSL
* Remove needless check for arc4_seeded_ok
* Cleanup __func__ detection
* Add convenience macros for user-triggered events
* Notify event base if there are no more events, so it can exit without
delay
* Fix base unlocking in event_del() if event_base_set() runned in another
thread
* If precise_time is false, we should not set EVENT_BASE_FLAG_PRECISE_TIMER
* Fix race in access to ev_res from event loop with event_active()
* Return from event_del() after the last event callback termination
* Preserve socket error from listen across closesocket cleanup
* fix connection retries when there more then one request for connection
* improve error path for bufferevent_{setfd,enable,disable}()
* Fix conceivable UAF of the bufferevent in evhttp_connection_free()
* Fix evhttp_connection_get_addr() fox incomming http connections
* fix leaks in evhttp_uriencode()
* CONNECT method only takes an authority
* Allow bodies for GET/DELETE/OPTIONS/CONNECT
* Do not crash when evhttp_send_reply_start() is called after a timeout.
* Fix crashing http server when callback do not reply in place
* fix handling of close_notify (ssl) in http with openssl bufferevents
* use *_new_with_arg() to match function prototype
* avoid NULL dereference on request is not EVHTTP_REQ_POST
* bufferevent_socket_connect{,_hostname}() missing event callback and use
ret code
* don't fail be_null_filter if bytes are copied
* Call underlying bev ctrl GET_FD on filtered bufferevents
* be_openssl: avoid leaking of SSL structure
* Add missing includes into openssl-compat.h
* Explicitly call SSL_clear when reseting the fd.
* sample/https-client: use host SSL certificate store by default
* ipv6only socket bind support
* evdns: handle NULL filename explicitly
* Fix assert() condition in evbuffer_drain() for IOCP
* fix incorrect unlock of the buffer mutex (for deferred callbacks)
* Fix wrong assert in evbuffer_drain()
* Port `event_rpcgen.py` and `test/check-dumpevents.py` to Python 3.
- rename python2-shebang.patch -> python3-shebang.patch following port
-------------------------------------------------------------------
Tue Jul 10 16:19:03 UTC 2018 - mrostecki@suse.com
- Make use of %license macro
-------------------------------------------------------------------
Tue Jun 12 14:50:53 UTC 2018 - mrostecki@suse.com
- Add devel-static package, which is needed for building Envoy
(https://www.envoyproxy.io/) and Cilium with Envoy integration
- Fix an error about /usr/bin/env shebang in event_rpcgen.py
* python2-shebang.patch
-------------------------------------------------------------------
Mon Oct 2 21:13:04 UTC 2017 - jengelh@inai.de
- Trim description of secondary packages and SRPM.
Rectify RPM group.
-------------------------------------------------------------------
Mon Oct 2 08:24:33 UTC 2017 - dimstar@opensuse.org
- Add baselibs.conf: build libevent-2_1-8-32bit (needed by
libqt5-qtwebengine).
-------------------------------------------------------------------
Mon Feb 20 14:13:21 UTC 2017 - ddiss@suse.com
- Update to 2.1.8 stable
* Fix _FILE_OFFSET_BITS redefinition
* evutil_time: include <unistd.h> when there is only sleep()/usleep()
* test/dns: run async resolving after sync one (to avoid timeouts)
* test/http: turn off some tests that based on backlog filling
* Fix incorrect MIME type
- Add libevent-2.1.8-stable.tar.gz.asc tarball GPG signature
* Replace keyring with Azat Khuzhin's public key
-------------------------------------------------------------------
Fri Nov 25 13:32:16 UTC 2016 - ddiss@suse.com
- Update to 2.1.7 rc
* Fix cmake -DEVENT__COVERAGE=ON
* use ev_uint16_t instead of unsigned short for port
* poll: Prevent libevent from spinning if POLLNVAL occurs
* Make it build using OpenSSL 1.1.0
* Don't call BIO_number_{read|written} on NULL BIOs.
* Switch from a 512 to 2048-bit RSA key.
* Ignore temporary configure files
-------------------------------------------------------------------
Wed Jul 6 13:23:28 UTC 2016 - ddiss@suse.com
- Fix pkg-config/pkgconfig BuildRequires for Fedora.
-------------------------------------------------------------------
Sat Mar 14 09:10:46 UTC 2015 - mpluskal@suse.com
- Cleanup spec file with spec-cleaner
- Add gpg signature
- Enable tests that do not require network connection
-------------------------------------------------------------------
Sun Feb 22 15:47:36 UTC 2015 - benoit.monin@gmx.fr
- update to 2.0.22:
* Avoid integer overflow bugs in evbuffer_add() and related
functions. See CVE-2014-6272 advisory for more information
* fix #73 and fix http_connection_fail_test to catch it
* Avoid racy bufferevent activation
* Fix compilation with WIN32_HAVE_CONDITION_VARIABLES enabled
* Fix missing AC_PROG_SED on older Autoconfs
* Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
* Use AC_CONFIG_HEADERS in place of AM_CONFIG_HEADERS for
autmake 1.13 compat
* Rename configure.in to configure.ac to appease newer autoconfs
* Avoid using top_srcdir in TESTS: new automakes do not like this
* Use windows vsnprintf fixup logic on all windows environments
* Fix a compiler warning when checking for arc4random_buf linker
breakage
* Fix another arc4random_buf-related warning
* Add -Qunused-arguments for clang on macos
* Avoid leaking fds on evconnlistener with no callback set
* Avoid double-close on getsockname error in
evutil_ersatz_socketpair
* Fix a locking error in bufferevent_socket_get_dns_error
* libevent/win32_dealloc() : fix sizeof(pointer) vs
sizeof(*pointer)
* bufferevent_pair: don't call downcast(NULL)
* Consistently check for failure from evbuffer_pullup()
* Fix race caused by event_active
* Avoid redundant invocations of init_extension_functions for
IOCP
* Typo fixes from Linus Nordberg
* Add a few files created by "make verify" to .gitignore
* regress_buffer: fix 'memcmp' compare size
* Fix bufferevent setwatermark suspend_read
* Fix evbuffer_peek() with len==-1 and start_at non-NULL
* Checking request nameserver for NULL, before using it
* Fix SEGFAULT after evdns_base_resume if no nameservers
installed
* Fix a crash in evdns related to shutting down evdns
* Check does arch have the epoll_create and __NR_epoll_wait
syscalls
* Avoid other RNG initialization FS reads when urandom file is
specified
* When we seed from /proc/sys/kernel/random/uuid, count it as
success
* Document that arc4random is not a great cryptographic PRNG
* Add evutil_secure_rng_set_urandom_device_file
* Really remove RNG seeds from the stack
* Fix a mistake in evbuffer_remove() arguments in example http
server code
* Fix a typo in a comment in buffer.h
* Clarify event_base_loop exit conditions
* Use FindClose for handle from FindFirstFile in http-server.c
* Fix a typo in a doxygen comment
- update source URL
-------------------------------------------------------------------
Fri Jan 9 18:01:22 UTC 2015 - ddiss@suse.com
- Update to 2.1.5 beta
* Avoid integer overflow bugs in evbuffer_add() and related
functions. See CVE-2014-6272 advisory for more information.
* Provide support for SO_REUSEPORT through LEV_OPT_REUSABLE_PORT
* Fix use-after-free error in EV_CLOSURE_EVENT callback
* Fix race caused by event_active
* Fix evbuffer_peek() with len==-1 and start_at non-NULL.
* Consistently check for failure from evbuffer_pullup()
* Fix evbuffer_peek() with len==-1 and start_at non-NULL.
* be async: avoid double close()
* Avoid double free for filterevents that use BEV_OPT_CLOSE_ON_FREE
* fix bufferevent setwatermark suspend_read
* bufferevent_openssl: reset fd_is_set when setfd with -1 is called
* Add evhttp_connection_set_family() to set addrinfo->family for
DNS requests
* Implement interface that provides the ability to have an outbound
evhttp_connection free itself once all requests have completed
* Implement new/free for struct evutil_monotonic_timer and export
monotonic time functions
* Fix a crash in evdns related to shutting down evdns
* evdns: avoid read-after-free in evdns_request_timeout_callback()
* Correctly handle allocation failures in evdns_getaddrinfo
* evdns: fix EVDNS_BASE_DISABLE_WHEN_INACTIVE in case
retransmit/retry
* evdns: add retry/reissue tests for
EVDNS_BASE_DISABLE_WHEN_INACTIVE
* evdns: fail ns after we are failing/retrasmitting request
* http: reset connection before installing retry timer (fix http
retries handling)
* regress_dns: fix leaks in getaddrinfo_async{,_cancel_stress}
tests
* use correct tt macro for pointer compare
* regress_buffer: fix 'memcmp' compare size
* Use a more precise calculation for max in time-ratelim.c
* Make a buffer larger in the tests to avoid a scary
evbuffer_copyout_from()
* Make http-server.c output into good html5
* Use FindClose for handle from FindFirstFile in http-server.c
* https-client: add -retries argument, for connection retries
* Fix mixed declarations and code (forbidden by ISO C90)
* tree.h: drop duplicated content of tree.h
* evdns: disable probing with EVDNS_BASE_DISABLE_WHEN_INACTIVE
* Change return type of evutil_load_windows_system_library_ to
HMODULE
-------------------------------------------------------------------
Tue Oct 21 13:19:13 UTC 2014 - ddiss@suse.com
- Fix build on non-SUSE rpm based platforms.
-------------------------------------------------------------------
Tue Oct 21 12:49:07 UTC 2014 - ddiss@suse.com
- Update to 2.1.4 alpha
* Added event_base_get_num_events()
* New event_base_active_by_fd API
* Add event_base_active_by_signal by analogy
* Add access to max event count stats
* Implemented EV_CLOSED event for epoll backend
(EPOLLRDHUP).
* Add evutil_secure_rng_set_urandom_device_file
* Add function to fetch underlying ratelimit cfg
* Pass and return const for bufferevent_get_token_bucket_cfg
* Add watermark introspection
* Add an option to trigger bufferevent I/O callbacks
* Add an option to trigger bufferevent event callbacks
* Add evhttp_connection_get_server()
* add a http default content type option
* http: implement new evhttp_connection_get_addr() api.
* Add a variant of evhttp_send_reply_chunk() with a callback on
evhttp_write_buffer()
* Allow registering callback for parsing HTTP headers
* Provide on request complete callback facility
* evhttp_request_set_on_complete_cb to be more specific about what
the function actually does and usage
* bug fix for issues #293 evdns_base_load_hosts doesn't remove
outdated addresses
* Don't segfault on no found event backend.
* Change the BSD license from 4 to 3-clause.
* Minimum required python version is 2.4.
* Added EVENT__ENABLE_GCC_WARNINGS, turns all warnings into
errors.
* Some work on making it possible to simply do add_subdirectory() on
the project.
* Rename event_extras to event_extra
* If evsel->del() fails, don't leave the evmap in an inconsistent
state
* Move event_debug_note_teardown_ before mm_free.
* Check CLOCK_MONOTONIC_* at runtime if needed.
* Fix reinit of fds with EV_WRITE but not EV_READ.
* Tweaked callbacks to prevent race condition
(https://github.com/libevent/libevent/issues/104)
* Move assert(ev) to before we use ev in EV_CLOSURE_EVENT_FINALIZE
case
* Fix a double close() bug in evhttp when the underlying bufferevent uses
BEV_OPT_CLOSE_ON_FREE.
* Avoid racy bufferevent activation
* When we seed from /proc/sys/kernel/random/uuid, count it as success
* Avoid other RNG initialization FS reads when urandom file is
specified
* Really remove RNG seeds from the stack
* Initialize async bufferevent timeout CBs unconditionally
* Checking request nameserver for NULL, before using it.
* Fix SEGFAULT after evdns_base_resume if no nameservers
installed.
* Actually use the log facility for reporting evdns problems.
* Fix SEGFAULT after evdns_base_resume if no nameservers
installed.
* fix for ServFail from RIPE Atlas release
* Missed lock acquire/release in event_base_cancel_single_callback_()
* Fix locking in bufferevent_get_options_().
* Avoid leaking segment mappings when offset is not a page multiple
* Add tests for evdns_base_resume().
* Avoid redundant syscall to make a nonblocking socket nonblocking
* Avoid redundant syscall if making a socket cloexec twice
* Avoid redundant invocations of init_extension_functions for IOCP
* le-proxy: Fail more gracefully if opening listener fails
* http-server: drop uri_root from base_url in http-server.
* https-client: POST supported, args supported
* https-client: Set hostname for SNI extension
- Update to 2.1.3 alpha
* Implement event_finalize() and related functions to avoid certain
deadlocks
* Use finalization feature so bufferevents can avoid deadlocks
* Always run pending finalizers when event_base_free() is called
* Remove bufferevent_del_generic_timeout_cbs as now unused
* More documentation for finalization feature
* Make the event_finalize* functions return an error code
* Mark the finalize stuff as experiemental in case it needs to
change
* evdns: New flag to make evdns not prevent the event loop from
exiting
* Make event_remove_timer behave correctly with persistent timers
* Unit test for event_remove_timer with EV_PERSIST.
* Double-check next timeout when adding events
* event_base_update_cache_time should be a no-op if the loop isn't
running
* Avoid leaking fds on evconnlistener with no callback set
* Avoid double-close on getsockname error in evutil_ersatz_socketpair
* Fix a locking error in bufferevent_socket_get_dns_error.
* Fix a mistake in evbuffer_remove() arguments in example http server code
* When EWOULDBLOCK is not EAGAIN, treat it as equivalent to it
* Fix ipv6 support for http. When URL contain domain, not IP
address.
* uri decode: fix for warning "use of uninitialised value"
* uri decode: changed the test for the existence of the next character
* Add new error_cb for actual reporting of HTTP request errors.
* Add test for EVREQ_HTTP_REQUEST_CANCEL into http_cancel_test()
* Drop extra header http_struct.h from regress_http.c
* https-client was putting newlines at 256-byte boundaries
* better handling of OpenSSL errors
* use Debian's default root certificate location
* use iSECPartners code to validate hostname in certificate
* pull in wildcard matching code from cURL
- Update to 2.1.2 alpha
* Replace pipe-based notification with EVFILT_USER where possible.
* Make th_base_lock nonrecursive.
* New event_get_priority() function to return an event's priority
* Add a bufferevent_get_priority() function
* Add an event_base_loopcontinue() to tell Libevent to rescan for more
events right away
* Add a new callback to get called on evbuffer_file_segment free
* Expose event_base_foreach_event() as a public API.
* Add an event_remove_timer() to remove timer on an event without
deleting it
* Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
semantics
* Rename event_enable_lock_debuging() to ..._debugging(). (The old name
should still work.)
* Add missing implementation for event_enable_debug_logging
* Do not track use_monotonic field when is no monotonic clock
* EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
* On Linux, use CLOCK_MONOTONIC_COARSE by default
* Refactor monotonic timer handling into a new type and set of
functions; add a gettimeofday-based ratcheting implementation
* Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
timer
* Avoid giving a spurious warning when timerfd support is unavailable
* Free dangling event_once objects on event_base_free()
* Avoid (unlikely) overflow in bench_httpclient.c
* Change evutil_weakrand_() to avoid platform random()
* Refactor the callback part of an event into its own event_callback
type
* Add "active later" event_callbacks to supersede deferred
* event_base_assert_ok: check value of event_active_count for
correctness
* Replace deferred_cbs with event_callback-based implementation.
* Restore our priority-inversion-prevention code with deferreds
* Refactor event_persist_closure: raise and extract some common logic
* Remove the unused bits from EVLIST_ALL
* ignore LWS after field-content in headers
* Remove trailing tabs in HTTP headers as well.
* Remove internal ws from multiline http headers correctly
* add evhttp_request_get_response_code_line
* Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
evhttp_connection_fail_
* preserve errno in evhttp_connection_fail_ for inspection by the
callback
* Correctly handle running on a system where accept4 doesn't work.
* Avoid double-free on error in evbuffer_add_file.
* Fix another possible uninitialized read in dns regression tests.
* Prevent reference leak of bufferevent if getaddrinfo fails.
* Make event_base_getnpriorities work with old "implicit base" code
* Fix event_dlist definition when sys/queue not included
- Update to 2.1.1 alpha
* Replace several TAILQ users with LIST. LIST can be a little faster than
TAILQ for cases where we don't need queue-like behavior.
* Disabled code to optimize the case where we reinsert an existing
timeout
* Remove a needless base-notify when rescheduling the first timeout
* Save a needless comparison when removing/adjusting timeouts
* Possible optimization: split event_queue_insert/remove into
separate functions.
* Make event_count maintenance branchless at the expense of an
extra shift.
* Optimization in event_process_active(): ignore maxcb & endtime
for highest priority events.
* Bypass event_add when using event_base_once() for a 0-sec timeout
* Remove the eventqueue list and the ev_next pointers.
* Roughly 20% speed increase when line-draining a buffer using
EVBUFFER_EOL_CRLF
* Infrastructure for using faster/fewer syscalls when creating
sockets
* Minimize syscalls during socket creation in listener.c
* Use a wrapper function to create the notification
pipe/socketpair/eventfd
* Use pipes for telling signals to main thread when possible
* Save syscalls when constructing listener sockets for evhttp
* Save some syscalls when creating evdns sockets
* Save some syscalls when constructing a socket for a bufferevent
* Prefer epoll_create1 on Linux where available
* Use current event set rather than current pending change when
deciding whether to no-op a del
* evport: use evmap_io to track fdinfo status. Should save time and
RAM.
* evport: Remove a linear search over recent events when
reactivating them
* evport: Use portev_user to remember fdinfo struct
* evport: don't scan more events in ed_pending than needed
* evport: Remove artificial low limit on max events per getn call
* Reenable main/many_events_slow_add for evport in 2.1
* Add event_enable_debug_logging() to control use of debug logs
* Add event_config function to limit time/callbacks between calls
to dispatch
* New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
events are pending
* Add event_base_get_npriorities() function.
* Make evbase_priority_init() and evbase_get_npriorities()
threadsafe
* New event_base_update_cache_time() to set cached_tv to current
time
* Add event_self_cbarg() to be used in conjunction with
event_new().
* Add a new libevent_global_shutdown() to free all globals before
exiting.
* Use getifaddrs to detect our interfaces if possible
* Add event_base_get_running_event() to get the event* whose cb we
are in
* Add evbuffer_add_file_segment() so one fd can be used efficiently
in more than one evbuffer_add_file at a time
* Allow evbuffer_ptr_set to yield a point just after the end of the
buffer.
* Allow evbuffer_ptr to point to position 0 in an empty evbuffer
* Set the special "not found" evbuffer_ptr consistently.
* support adding buffers to other buffers non-destructively
* prevent nested multicast references, reworked locking
* New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
evbuffer
* Make evbuffer_file_segment_types adaptable
* Added evbuffer_add_iovec and unit tests.
* Add evbuffer_copyout_from to copy data from the middle of a
buffer
* Allow users to set allow_dirty_shutdown
* Add a bufferevent_getcb() to find a bufferevent's current
callbacks
* bufferevent: Add functions to set/get max_single_read/write
values.
* bev_ssl: Be more specific in event callbacks. evhttp in particular gets
confused without at least one of BEV_EVENT_{READING|WRITING}.
* Support TCP_DEFER_ACCEPT sockopts for listeners
* Allow evconnlistener to be created in disabled state.
* The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
sockets too
* Add evhttp callback for bufferevent creation; this lets evhttp
support SSL.
* evhttp: Add evhttp_foreach_bound_socket.
* Provide the autoconf m4 macros for the new OpenSSL via pkg-config
stuff.
* Move libevent 1.x headers to include/, to put all public headers in
a new place.
* Add a magic number to debug_locks to better catch lock-coding
errors.
* munge the debug_lock signature before freeing it: it might help us
catch use-after-free
* Tweaks to return types with end-of-buf ptrs
* New evhttp function to adjust initial retry timeout
* event_rpcgen.py now prints status information to stdout and errors to
stderr.
* Restore fast-path event_reinit() for slower backends
* Check changelist as part of checking representational integrity
* Convert event-config.h macros to avoid reserved identifiers
* Convert include-guard macro convention to avoid reserved identifiers
* Make event_rpcgen.py output conform to identifier conventions
* Apply the naming convention to our EVUTIL_IS* functions
* Do not use system EAI/AI values if we are not using the system
getaddrinfo.
-------------------------------------------------------------------
Sat Jun 29 12:36:28 UTC 2013 - i@marguerite.su
- update to 2.0.21
* see ChangeLog for details.
-------------------------------------------------------------------
Fri Nov 16 21:24:42 UTC 2012 - andreas.stieger@gmx.de
- update to 2.0.20
* core: Make event_pending() threadsafe
* evhttp: Fix a memory leak on error in evhttp_uriencode
* evbuffer: Avoid possible needless call to writev
* evdns: memset sockaddr_in before using it
* evhttp: Check more setsockopt return values when binding sockets
* evdns: Avoid segfault on weird timeout during name lookup
* bufferevent_ssl: Correctly invoke callbacks when a SSL
bufferevent reads some and then blocks
-------------------------------------------------------------------
Mon Jul 30 22:21:50 UTC 2012 - crrodriguez@opensuse.org
- Libevent 2.0.19
* Fix periodic timeout behavior when time jumps forwar
* Avoid certain priority inversions
* More evdns improvements
* lots of other bugfixes, see NEWS for details.
- Provide openssl support.
-------------------------------------------------------------------
Wed Feb 1 01:13:02 UTC 2012 - jengelh@medozas.de
- Remove redundant tags/sections per specfile guideline suggestions
- Use "pkgconfig" BR so that the package also works on Redhats.
-------------------------------------------------------------------
Wed Aug 3 13:59:36 UTC 2011 - friseer@gmx.de
- spec mods
o libsoname macro
o name macro
- added baselibs.conf
- rpmlint
o fix self obsoletes
-------------------------------------------------------------------
Mon Mar 22 11:51:31 UTC 2011 - dimstar@opensuse.org
- Drop autoreconf call from build section. We do not carry any
patches at this time.
-------------------------------------------------------------------
Mon Mar 21 23:02:31 UTC 2011 - dimstar@opensuse.org
- Update to version 2.0.10:
+ Bugfixes:
- Minor fix for IOCP shutdown handling fix
- Correctly notify the main thread when activating an event
from a subthread
- Reject overlong http requests early when Expect:100-continue
is set
- EVUTIL_ASSERT: Use sizeof() to avoid "unused variable"
warnings with -DNDEBUG.
+ Code cleanups:
- bufferevent-internal.h: Use the new event2/util.h header,
not evutil.h
- Use relative includes instead of system includes consistently
- Make whitespace more consistent
- For all changes between 1.4.14 and 2.0.10, see ChangeLog.
- BuildRequire pkg-config, for proper pkgconfig() provides.
- Change library soname to libevent-2_0-5
-------------------------------------------------------------------
Mon Jun 21 14:41:53 UTC 2010 - alexandre@exatati.com.br
- Spec file cleaned with spec-cleaner;
- Changes in 1.4.14b-stable
o Set the VERSION_INFO correctly for 1.4.14
- Changes in 1.4.14-stable
o Add a .gitignore file for the 1.4 branch. (d014edb)
o Backport evbuffer_readln(). (b04cc60 Nicholas Marriott)
o Make the evbuffer_readln backport follow the current API (c545485)
o Valgrind fix: Clear struct kevent before checking for OSX bug. (5713d5d William Ahern)
o Fix a crash when reading badly formatted resolve.conf (5b10d00 Yasuoka Masahiko)
o Fix memory-leak of signal handler array with kqueue. [backport] (01f3775)
o Update sample/signal-test.c to use newer APIs and not leak. (891765c Evan Jones)
o Correct all versions in 1.4 branch (ac0d213)
o Make evutil_make_socket_nonblocking() leave any other flags alone. (81c26ba Jardel Weyrich)
o Adjusted fcntl() retval comparison on evutil_make_socket_nonblocking(). (5f2e250 Jardel Weyrich)
o Correct a debug message in evhttp_parse_request_line (35df59e)
o Merge branch 'readln-backport' into patches-1.4 (8771d5b)
o Do not send an HTTP error when we've already closed or responded. (4fd2dd9 Pavel Plesov)
o Re-add event_siglcb; some old code _was_ still using it. :( (bd03d06)
o Make Libevent 1.4 build on win32 with Unicode enabled. (bce58d6 Brodie Thiesfield)
o Distribute nmake makefile for 1.4 (20d706d)
o do not fail while sending on http connections the client closed. (5c8b446)
o make evhttp_send() safe against terminated connections, too (01ea0c5)
o Fix a free(NULL) in min_heap.h (2458934)
o Fix memory leak when setting up priorities; reported by Alexander Drozdov (cb1a722)
o Clean up properly when adding a signal handler fails. (ae6ece0 Gilad Benjamini)
o Do not abort HTTP requests missing a reason string. (29d7b32 Pierre Phaneuf)
o Fix compile warning in http.c (906d573)
o Define _REENTRANT as needed on Solaris, elsewhere (6cbea13)
- Changes in 1.4.13-stable:
o If the kernel tells us that there are a negative number of bytes to read from a socket, do not believe it. Fixes bug 2841177; found by Alexander Pronchenkov.
o Do not allocate the maximum event queue and fd array for the epoll backend at startup. Instead, start out accepting 32 events at a time, and double the queue's size when it seems that the OS is generating events faster than we're requesting them. Saves up to 512K per epoll-based event_base. Resolves bug 2839240.
o Fix compilation on Android, which forgot to define fd_mask in its sys/select.h
o Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec
o Rename our replacement compat/sys/_time.h header to avoid build a conflict on HPUX; reported by Kathryn Hogg.
o Build kqueue.c correctly on GNU/kFreeBSD platforms. Patch pulled upstream from Debian.
o Fix a problem with excessive memory allocation when using multiple event priorities.
o When running set[ug]id, don't check the environment. Based on a patch from OpenBSD.
-------------------------------------------------------------------
Wed Oct 28 17:39:29 UTC 2009 - crrodriguez@opensuse.org
- libevent-devel Requires glibc-devel
-------------------------------------------------------------------
Thu Aug 27 15:21:57 CEST 2009 - meissner@suse.de
- Changes in 1.4.12-stable:
o Try to contain degree of failure when running on a win32 version so
heavily firewalled that we can't fake a socketpair.
o Fix an obscure timing-dependent, allocator-dependent crash in the evdns code.
o Use __VA_ARGS__ syntax for varargs macros in event_rpcgen when compiler
is not GCC.
o Activate fd events in a pseudorandom order with O(N) backends, so
that we don't systematically favor low fds (select) or earlier-added fds
(poll, win32).
o Fix another pair of fencepost bugs in epoll.c. [Patch from Adam Langley.]
o Do not break evdns connections to nameservers when our IP changes.
o Set truncated flag correctly in evdns server replies.
o Disable strict aliasing with GCC: our code is not compliant with it.
- Changes in 1.4.11-stable:
o Fix a bug when removing a timeout from the heap. [Patch from Marko Kreen]
o Remove the limit on size of HTTP headers by removing static buffers.
o Fix a nasty dangling pointer bug in epoll.c that could occur after
epoll_recalc(). [Patch from Kevin Springborn]
o Distribute Win32-Code/event-config.h, not ./event-config.h
- Changes in 1.4.10-stable:
o clean up buffered http connection data on reset; reported by Brian O'Kelley
o bug fix and potential race condition in signal handling; from Alexander Drozdov
o rename the Solaris event ports backend to evport
o support compilation on Haiku
o fix signal processing when a signal callback delivers a signal; from Alexander Drozdov
o const-ify some arguments to evdns functions.
o off-by-one error in epoll_recalc; reported by Victor Goya
o include Doxyfile in tar ball; from Jeff Garzik
o correctly parse queries with encoded \r, \n or + characters
-------------------------------------------------------------------
Mon Mar 16 16:48:18 CET 2009 - meissner@suse.de
- updated to 1.4.9-stable:
o event_add would not return error for some backends; from Dean McNamee
o Clear the timer cache on entering the event loop; reported by Victor Chang
o Only bind the socket on connect when a local address has been provided;
reported by Alejo Sanchez
o Allow setting of local port for evhttp connections to support millions
of connections from a single system; from Richard J ones.
o Clear the timer cache when leaving the event loop; reported by Robin Haberkorn
o Fix a typo in setting the global event base; reported by lance.
o Fix a memory leak when reading multi-line headers
o Fix a memory leak by not running explicit close detection for server connections
- updated to 1.4.8-stable:
o Match the query in DNS replies to the query in the request; from Vsevolod Stakhov.
o Fix a merge problem in which name_from_addr returned pointers to the stack; found by Jiang Hong.
o Do not remove Accept-Encoding header
- updated to 1.4.7-stable:
o Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
- updated to 1.4.6-stable:
o evutil.h now includes <stdarg.h> directly
o switch all uses of [v]snprintf over to evutil
o Correct handling of trailing headers in chunked replies; from Scott Lamb.
o Support multi-line HTTP headers; based on a patch from Moshe Litvin
o Reject negative Content-Length headers; anonymous bug report
o Detect CLOCK_MONOTONIC at runtime for evdns; anonymous bug report
o Fix a bug where deleting signals with the kqueue backend would cause subsequent adds to fail
o Support multiple events listening on the same signal; make signals
regular events that go on the same event queue; problem
report by Alexander Drozdov.
o Deal with evbuffer_read() returning -1 on EINTR|EAGAIN; from Adam Langley.
o Fix a bug in which the DNS server would incorrectly set the type of a cname reply to a.
o Fix a bug where setting the timeout on a bufferevent would take not effect if the event was already pending.
o Fix a memory leak when using signals for some event bases; reported by Alexander Drozdov.
o Add libevent.vcproj file to distribution to help with Windows build.
o Fix a problem with epoll() and reinit; problem report by Alexander Drozdov.
o Fix off-by-one errors in devpoll; from Ian Bell
o Make event_add not change any state if it fails; reported by Ian Bell.
o Do not warn on accept when errno is either EAGAIN or EINTR
-------------------------------------------------------------------
Tue Sep 16 17:54:14 CEST 2008 - mrueckert@suse.de
- split out devel and shared library package.
- drop static libs
-------------------------------------------------------------------
Thu Jul 3 11:57:22 CEST 2008 - meissner@suse.de
- upgraded to version 1.4.5-stable:
o Fix connection keep-alive behavior for HTTP/1.0
o Fix use of freed memory in event_reinit; pointed out by Peter Postma
o Constify struct timeval * where possible; pointed out by Forest
Wilkinson
o allow min_heap_erase to be called on removed members; from liusifan.
o Rename INPUT and OUTPUT to EVRPC_INPUT and EVRPC_OUTPUT. Retain
INPUT/OUTPUT aliases on on-win32 platforms for backwards compatibility.
o Do not use SO_REUSEADDR when connecting
o Fix Windows build
o Fix a bug in event_rpcgen when generated fixed-sized entries
- upgraded to version 1.4.4-stable:
o Correct the documentation on buffer printf functions.
o Don't warn on unimplemented epoll_create(): this isn't a problem,
just a reason to fall back to poll or select.
o Correctly handle timeouts larger than 35 minutes on Linux with epoll.c.
This is probably a kernel defect, but we'll have to support old kernels
anyway even if it gets fixed.
o Fix a potential stack corruption bug in tagging on 64-bit CPUs.
o expose bufferevent_setwatermark via header files and fix high watermark
on read
o fix a bug in bufferevent read water marks and add a test for them
o introduce bufferevent_setcb and bufferevent_setfd to allow better
manipulation of bufferevents
o use libevent's internal timercmp on all platforms, to avoid bugs on
old platforms where timercmp(a,b,<=) is buggy.
o reduce system calls for getting current time by caching it.
o fix evhttp_bind_socket() so that multiple sockets can be bound by
the same http server.
o Build test directory correctly with CPPFLAGS set.
o Fix build under Visual C++ 2005.
o Expose evhttp_accept_socket() API.
o Merge windows gettimeofday() replacement into a new
evutil_gettimeofday() function.
o Fix autoconf script behavior on IRIX.
o Make sure winsock2.h include always comes before windows.h include.
-------------------------------------------------------------------
Tue Apr 8 09:04:44 CEST 2008 - meissner@suse.de
- upgraded to version 1.4.3stable
* include Content-Length in reply for HTTP/1.0 requests with keep-alive
* Patch from Tani Hosokawa: make some functions in http.c threadsafe.
* Do not free the kqop file descriptor in other processes, also allow it to be 0; from Andrei Nigmatulin
* make event_rpcgen.py generate code include event-config.h; reported by Sam Banks.
* make event methods static so that they are not exported; from Andrei Nigmatulin
* make RPC replies use application/octet-stream as mime type
* do not delete uninitialized timeout event in evdns
-------------------------------------------------------------------
Fri Mar 28 13:47:32 CET 2008 - meissner@suse.de
- upgraded to version 1.4.2rc
* make Solaris event subsystems more reliable; from W.C.A. Wijngaards
* event_base_get_method(); from Springande Ulv
* fix HTTP/1.1 chunk formatting; from "propanbutan"
* allow 64-bit content lengths; from Scott Lamb
* and more...
- upgraded to version 1.4.1beta
* fixed some memory leaks and other misc cleanup; from Christopher Layne, Scott Lamb and Charles Kerr
* introduced event_reinit to deal with fork()
* improved efficiency of generated RPC structure
* performance improvements to Win32 backend
* and many more...
- upgraded to version 1.4.0beta
* a new RPC subsytem for writing distributed clients and servers
* almost everything is documented via Doxygen now
* many fixes and improvements to evdns and evhttp
* libevent now builds two additional libraries: libevent_core (containing only the event core) and libevent_extras (contained evdns, evhttp and evrpc)
* performance improvements due to using a heap instead of red-black trees for timeouts
* Solaris' event ports are better supported
-------------------------------------------------------------------
Thu Dec 27 06:09:22 CET 2007 - crrodriguez@suse.de
- fix library-without-ldconfig-* errors
- version 1.3e
* Add a "Date" header to HTTP responses when it's missing, as required by HTTP 1.1. Original Patch from Ralph Moritz.
* Fix a memory leak in which failed HTTP connections whould not free the request object.
* Fix a memory leak in the DNS server.
* Handle NULL timeouts correctly on Solaris; from Trond Norbye
* Recalculate pending events properly when reallocating event array on Solaris; from Trond Norbye
-------------------------------------------------------------------
Mon Mar 5 14:00:29 CET 2007 - meissner@suse.de
- upgraded to 1.3b:
+ signals now useable in multithreaded apps.
-------------------------------------------------------------------
Tue Feb 20 13:17:44 CET 2007 - meissner@suse.de
- Updated to 1.3a.
+ Small bug and performances fixes to evhttp layer.
+ DNS Server from Adam Langley and Nick Mathewson
+ Chunked transfer encoding for HTTP/1.1 from Dug Song.
+ DNS DDoS fix; bug report from Jon Oberheide.
+ Various small improvements.
-------------------------------------------------------------------
Sun Nov 12 19:04:24 CET 2006 - lmuelle@suse.de
- Update to version 1.2.
+ Support for non-blocking DNS resolution.
+ Support for lightweight HTTP clients and servers.
-------------------------------------------------------------------
Wed Jan 25 21:37:27 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Mon May 30 12:05:26 CEST 2005 - okir@suse.de
- Initial packaging

30
libevent.keyring Normal file
View File

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
mQENBEwRCC4BCAC8lYmLG0vWUjMTLO6o44X6hDLuNanolgmVuPpNaeuuST+JrVo6
L4xO+O/3IhSxS9icwojnk1Zz5UR9gFXVz3MMy/ONsCjZZEo+URHNw08c7mohfFIz
2EARwF3qRC7PASGDRk6XxEx9L1A3gMPSCjwCNmLbRqacfZghsUjN9Spo69lJQNX6
NfQ3+11w8vHUU2I5Jk1v2WTd2XAVK6monniItEvG6T58LZaxC8H/rxAPHeN1oBjk
N/XSbxu3+pZXZXyNJ80tjFYEIcJ9Zd1bZV7cE7i7HORr0aL6n768K4ufpT0ps1bu
oj6v9TQZSH0CJeiAZRBQ3dbqkg/tEmywhOC1ABEBAAG0IkF6YXQgS2h1emhpbiA8
YTNhdC5tYWlsQGdtYWlsLmNvbT6JATgEEwECACIFAkwRCC4CGwMGCwkIBwMCBhUI
AgkKCwQWAgMBAh4BAheAAAoJELhghoSO+Ght8KMH/0r4tHMQgo/j6Bsz4hnoQKo3
aEC8htHfxUPkewAxwHRTXAjSYc5qpkCgN+Ek0ezWmV8ZiZM40jomASDKKGHQvd9u
TIgUm0tHWlbc0zVVdXUTu3uuoeZUNNOfUD+sBTF9KF4gqhekI891LBWdsZlGrOUq
Nr3XWFlke2Ldd/h4fVFTcIVaIej+zyuOZiKxgZh2Y5lvRbJk2GHIOJmDkNIo8cl3
uv1AKXUeVlwr6hsndFDNXNrXw/f5ftS/m0zl3igoid6f35w8JU/HjbesxICUtQ9p
Lr5YiKY8oQLc8sESS83g17Qb73lVhyFy/3XkLUUSbpueQVo3iii9b9rXEBQ43ny5
AQ0ETBEILgEIAO8jcJ8AyLTWj92jePIl0vw1h8nlZXopWRA8pUqFlKGuKForCOP2
F08E9dpUj1y091fl+HCI5fvyPkLgHITwXsg6IVamVuS06VB7oAcUhimbRxn++5dO
Jlaom2nU89Da51nP9vXnKVr89q/+mAmt0l9JwMVCV8756VzUNHmkh/e6HRUoawst
bexRf5yu6lzx0xYURTNoSSBoKNWkawoYiClYPdBg356uo1ivTrmuzHhgl8Gjpf5s
MQ1Rndui9wj/7ru1edBe7uU7klz4OYI3NvvRZZGPByodUJhX4mLsFUZzM1COwO5b
Yk2AVO7Ga57fPMhW7+PWAz+TwbnG6cKiZdEAEQEAAYkBHwQYAQIACQUCTBEILgIb
DAAKCRC4YIaEjvhobcChB/40hyVKhkiUIOFHFuWxtAOVB/Q+XZCeM+RMiGj4hOdg
o5eK40J4MLGp6s2Iq2pi4weE7sTXN8OjLxXnWHiqD+dF4Ve6DPjYkOxtamzEmICi
wftmRGwjT6GOcMP9NN6lC5Zo4lfXLukfZU0BuDdn7+FAas02VwuVZP44xH1huiYl
OQ6nPNUVPXFih3ZmvlvXtYUcEmOsF3xbNhOMR4CJhr59fanJv4qZxMWAD4w/t2C0
12d9zu1Gh9iT78kpZ+GSsibP+3YIkr7siFAiAz5ban9WqmRWQS/aun71OamNl1p7
wG6vhUukF/a6weIBe53/NXMSCcfy9n3TbAdW/8K7sidT
=46so
-----END PGP PUBLIC KEY BLOCK-----

177
libevent.spec Normal file
View File

@ -0,0 +1,177 @@
#
# spec file for package libevent
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: libevent
%define version_base 2
%define version_minor 1
%define version_release 12
%define abi_release 7
%define version_suffix stable
%define libsoname %{name}-%{version_base}_%{version_minor}-%{abi_release}
Version: %{version_base}.%{version_minor}.%{version_release}
Release: 0
Summary: An event notification library
License: BSD-3-Clause
Group: Development/Libraries/C and C++
URL: http://libevent.org/
Source0: https://github.com/%{name}/%{name}/releases/download/release-%{version}-%{version_suffix}/%{name}-%{version}-%{version_suffix}.tar.gz
Source1: https://github.com/%{name}/%{name}/releases/download/release-%{version}-%{version_suffix}/%{name}-%{version}-%{version_suffix}.tar.gz.asc
Source2: %{name}.keyring
Source3: libevent-rpmlintrc
Source99: baselibs.conf
Patch0: python3-shebang.patch
# PATCH-FEATURE-UPSTREAM 0001-evwatch-Add-prepare-and-check-watchers.patch
Patch1: 0001-evwatch-Add-prepare-and-check-watchers.patch
# PATCH-FEATURE-UPSTREAM 0002-evwatch-fix-race-condition.patch
Patch2: 0002-evwatch-fix-race-condition.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: openssl-devel
%if 0%{?fedora_version} || 0%{?rhel_version}
BuildRequires: pkgconfig
%else
BuildRequires: pkg-config
%endif
BuildRequires: zlib-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.
%package -n %{libsoname}
Summary: An event notification library
Group: System/Libraries
Provides: %{name} = %{version}
Obsoletes: %{name} < %{version}
%description -n %{libsoname}
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.
Currently, libevent supports /dev/poll, kqueue(2), event ports,
POSIX select(2), Windows select(), poll(2), and epoll(4).
Libevent additionally provides a sophisticated framework for buffered
network IO, with support for sockets, filters, rate-limiting, SSL,
zero-copy file transmission, and IOCP. Libevent includes support for
several useful protocols, including DNS, HTTP, and a minimal RPC
framework.
This package holds the shared libraries for libevent.
%package devel
Summary: Development files for libevent2
Group: Development/Libraries/C and C++
Requires: %{libsoname} = %{version}
Requires: glibc-devel
# Both have /usr/include/event.h
Conflicts: libev-devel
Provides: %{name}:%{_includedir}/event.h
%description devel
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.
This package holds the development files for libevent2.
%package devel-static
Summary: Static libraries for libevent2
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
%description devel-static
The libevent API provides a mechanism to execute a callback function
when a specific event occurs on a file descriptor or after a timeout
has been reached. Furthermore, libevent also support callbacks due to
signals or regular timeouts.
This package holds the static libraries for libevent2.
%prep
%setup -q -n %{name}-%{version}-%{version_suffix}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
./autogen.sh
export ac_cv_func_select=no
%configure \
--disable-libevent-regress
make %{?_smp_mflags}
%check
make check
%install
%make_install %{?_smp_mflags}
find %{buildroot}%{_libdir} -type f -name "*.la" -delete -print
%post -n %{libsoname} -p /sbin/ldconfig
%postun -n %{libsoname} -p /sbin/ldconfig
%files -n %{libsoname}
%defattr(-,root,root,-)
%license LICENSE
%doc ChangeLog whatsnew-2.0.txt whatsnew-2.1.txt
%{_libdir}/%{name}-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_core-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_extra-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_pthreads-%{version_base}.%{version_minor}.so.%{abi_release}*
%{_libdir}/%{name}_openssl-%{version_base}.%{version_minor}.so.%{abi_release}*
%files devel
%defattr(-,root,root)
%{_bindir}/event_rpcgen.py
%{_includedir}/evdns.h
%{_includedir}/event.h
%{_includedir}/evhttp.h
%{_includedir}/evrpc.h
%{_includedir}/evutil.h
%{_includedir}/event2
%{_libdir}/%{name}.so
%{_libdir}/%{name}_core.so
%{_libdir}/%{name}_extra.so
%{_libdir}/%{name}_pthreads.so
%{_libdir}/%{name}_openssl.so
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/pkgconfig/%{name}_pthreads.pc
%{_libdir}/pkgconfig/%{name}_openssl.pc
%{_libdir}/pkgconfig/%{name}_core.pc
%{_libdir}/pkgconfig/%{name}_extra.pc
%files devel-static
%defattr(-,root,root)
%{_libdir}/%{name}.a
%{_libdir}/%{name}_core.a
%{_libdir}/%{name}_extra.a
%{_libdir}/%{name}_openssl.a
%{_libdir}/%{name}_pthreads.a
%changelog

29
python3-shebang.patch Normal file
View File

@ -0,0 +1,29 @@
From 293f2e5274ff62edcc1d49ba5439af3d986dfe3b Mon Sep 17 00:00:00 2001
From: Michal Rostecki <mrostecki@suse.com>
Date: Tue, 12 Jun 2018 16:41:36 +0200
Subject: [PATCH] Use python3 instead of env as an interpreter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For the rpm runtime dependency detection to work, the shebang
`#!/usr/bin/env python3` needs to be patched into
´#!/usr/bin/python3`, otherwise the package dependency generator
merely adds a dependency on /usr/bin/env rather than the actual
interpreter /usr/bin/python3.
[ddiss@suse.de: python2 -> python3]
---
event_rpcgen.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: libevent-2.1.10-stable/event_rpcgen.py
===================================================================
--- libevent-2.1.10-stable.orig/event_rpcgen.py
+++ libevent-2.1.10-stable/event_rpcgen.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
#
# Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu>
# Copyright (c) 2007-2012 Niels Provos and Nick Mathewson