mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-13 06:04:42 +02:00
Merge bitcoin/bitcoin#34411: Full Libevent removal
146b3adfaadoc: remove libevent (fanquake)96d7f55f1dvcpkg: remove libevent (fanquake)0443943dc0ci: remove libevent (fanquake)a0ca249f3fdepends: remove libevent (fanquake)35d2d06797cmake: remove libevent (fanquake) Pull request description: This builds on all the work done by fjahr and pinheadmz to fully remove libevent from the codebase. Closes #31194. ACKs for top commit: fjahr: ACK146b3adfaadergoegge: ACK146b3adfaapinheadmz: ACK146b3adfaasedited: ACK146b3adfaaTree-SHA512: ecd14be93d11603d7c373a41474a7df1734b48550b12cd37933b604860913a77d42ee08bc187610881bec239b0834c2486f8fe52299cd3315a57b79c2e95929d
This commit is contained in:
@@ -290,9 +290,6 @@ target_link_libraries(bitcoin_node
|
||||
minisketch
|
||||
univalue
|
||||
Boost::headers
|
||||
$<TARGET_NAME_IF_EXISTS:libevent::core>
|
||||
$<TARGET_NAME_IF_EXISTS:libevent::extra>
|
||||
$<TARGET_NAME_IF_EXISTS:libevent::pthreads>
|
||||
$<TARGET_NAME_IF_EXISTS:USDT::headers>
|
||||
)
|
||||
if(WITH_EMBEDDED_ASMAP)
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
// Copyright (c) 2016-present The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_SUPPORT_EVENTS_H
|
||||
#define BITCOIN_SUPPORT_EVENTS_H
|
||||
|
||||
#include <ios>
|
||||
#include <memory>
|
||||
|
||||
#include <event2/event.h>
|
||||
#include <event2/http.h>
|
||||
|
||||
#define MAKE_RAII(type) \
|
||||
/* deleter */\
|
||||
struct type##_deleter {\
|
||||
void operator()(struct type* ob) {\
|
||||
type##_free(ob);\
|
||||
}\
|
||||
};\
|
||||
/* unique ptr typedef */\
|
||||
typedef std::unique_ptr<struct type, type##_deleter> raii_##type
|
||||
|
||||
MAKE_RAII(event_base);
|
||||
MAKE_RAII(event);
|
||||
MAKE_RAII(evhttp);
|
||||
|
||||
inline raii_event_base obtain_event_base() {
|
||||
auto result = raii_event_base(event_base_new());
|
||||
if (!result.get())
|
||||
throw std::runtime_error("cannot create event_base");
|
||||
return result;
|
||||
}
|
||||
|
||||
inline raii_event obtain_event(struct event_base* base, evutil_socket_t s, short events, event_callback_fn cb, void* arg) {
|
||||
return raii_event(event_new(base, s, events, cb, arg));
|
||||
}
|
||||
|
||||
inline raii_evhttp obtain_evhttp(struct event_base* base) {
|
||||
return raii_evhttp(evhttp_new(base));
|
||||
}
|
||||
|
||||
#endif // BITCOIN_SUPPORT_EVENTS_H
|
||||
@@ -82,7 +82,6 @@ add_executable(test_bitcoin
|
||||
prevector_tests.cpp
|
||||
private_broadcast_tests.cpp
|
||||
psbt_tests.cpp
|
||||
raii_event_tests.cpp
|
||||
random_tests.cpp
|
||||
rbf_tests.cpp
|
||||
rest_tests.cpp
|
||||
@@ -168,7 +167,6 @@ target_link_libraries(test_bitcoin
|
||||
minisketch
|
||||
secp256k1
|
||||
Boost::headers
|
||||
libevent::extra
|
||||
$<TARGET_NAME_IF_EXISTS:USDT::headers>
|
||||
)
|
||||
|
||||
|
||||
@@ -154,7 +154,6 @@ target_link_libraries(fuzz
|
||||
univalue
|
||||
secp256k1
|
||||
Boost::headers
|
||||
libevent::extra
|
||||
)
|
||||
|
||||
if(ENABLE_WALLET)
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
// Copyright (c) 2016-present The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include <event2/event.h>
|
||||
|
||||
#include <cstdlib>
|
||||
#include <map>
|
||||
|
||||
#include <support/events.h>
|
||||
|
||||
#include <test/util/setup_common.h>
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(raii_event_tests, BasicTestingSetup)
|
||||
|
||||
#ifdef EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED
|
||||
|
||||
static std::map<void*, short> tags;
|
||||
static std::map<void*, uint16_t> orders;
|
||||
static uint16_t tagSequence = 0;
|
||||
|
||||
static void* tag_malloc(size_t sz) {
|
||||
void* mem = malloc(sz);
|
||||
if (!mem) return mem;
|
||||
tags[mem]++;
|
||||
orders[mem] = tagSequence++;
|
||||
return mem;
|
||||
}
|
||||
|
||||
static void tag_free(void* mem) {
|
||||
tags[mem]--;
|
||||
orders[mem] = tagSequence++;
|
||||
free(mem);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(raii_event_creation)
|
||||
{
|
||||
event_set_mem_functions(tag_malloc, realloc, tag_free);
|
||||
|
||||
void* base_ptr = nullptr;
|
||||
{
|
||||
auto base = obtain_event_base();
|
||||
base_ptr = (void*)base.get();
|
||||
BOOST_CHECK(tags[base_ptr] == 1);
|
||||
}
|
||||
BOOST_CHECK(tags[base_ptr] == 0);
|
||||
|
||||
void* event_ptr = nullptr;
|
||||
{
|
||||
auto base = obtain_event_base();
|
||||
auto event = obtain_event(base.get(), -1, 0, nullptr, nullptr);
|
||||
|
||||
base_ptr = (void*)base.get();
|
||||
event_ptr = (void*)event.get();
|
||||
|
||||
BOOST_CHECK(tags[base_ptr] == 1);
|
||||
BOOST_CHECK(tags[event_ptr] == 1);
|
||||
}
|
||||
BOOST_CHECK(tags[base_ptr] == 0);
|
||||
BOOST_CHECK(tags[event_ptr] == 0);
|
||||
|
||||
event_set_mem_functions(malloc, realloc, free);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(raii_event_order)
|
||||
{
|
||||
event_set_mem_functions(tag_malloc, realloc, tag_free);
|
||||
|
||||
void* base_ptr = nullptr;
|
||||
void* event_ptr = nullptr;
|
||||
{
|
||||
auto base = obtain_event_base();
|
||||
auto event = obtain_event(base.get(), -1, 0, nullptr, nullptr);
|
||||
|
||||
base_ptr = (void*)base.get();
|
||||
event_ptr = (void*)event.get();
|
||||
|
||||
// base should have allocated before event
|
||||
BOOST_CHECK(orders[base_ptr] < orders[event_ptr]);
|
||||
}
|
||||
// base should be freed after event
|
||||
BOOST_CHECK(orders[base_ptr] > orders[event_ptr]);
|
||||
|
||||
event_set_mem_functions(malloc, realloc, free);
|
||||
}
|
||||
|
||||
#endif // EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
@@ -60,8 +60,8 @@ RPCMethod walletpassphrase()
|
||||
if (nSleepTime < 0) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Timeout cannot be negative.");
|
||||
}
|
||||
// Clamp timeout
|
||||
constexpr int64_t MAX_SLEEP_TIME = 100000000; // larger values trigger a macos/libevent bug?
|
||||
// Clamp timeout to ~3 years to avoid overflow when computing the relock time
|
||||
constexpr int64_t MAX_SLEEP_TIME = 100000000;
|
||||
if (nSleepTime > MAX_SLEEP_TIME) {
|
||||
nSleepTime = MAX_SLEEP_TIME;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user