aboutsummaryrefslogtreecommitdiff
path: root/src/compat.h
AgeCommit message (Collapse)Author
2022-06-20build: globally define NOMINMAXfanquake
Define (and document) `NOMINMAX` once, rather than across multiple source files. Defining this prevents the definition of min/max macros when using mingw-w64, which may conflict with unprefixed std::min/max usage. While that might not be the case for us, we'd always prefer to use the standard library in any case. For example: https://github.com/mingw-w64/mingw-w64/blob/73cadc06c62c6af5faf76f64ef08e684b48de48c/mingw-w64-headers/include/ntdef.h#L289-L300
2022-06-11compat: Consolidate mingw-w64 ASLR workaround for upstream libsecp changesfanquake
Achieve this by adding a MAIN_FUNCTION macro, consolidating the docs, and introducing the macro across our distributed binaries. Also update the docs to explain that anyone using binutils < 2.36 is effected by this issue. Release builds are not, because they use binutils 2.37. Currently LTS Linux distros, like Ubuntu Focal, ship with 2.34. https://packages.ubuntu.com/focal/binutils
2022-03-29compat: remove strnlen back-compat codefanquake
This was needed for mingw (not mingw-w64), and some older versions of macOS, which we no-longer support.
2021-12-30scripted-diff: Bump copyright headersHennadii Stepanov
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT- Commits of previous years: * 2020: fa0074e2d82928016a43ca408717154a1c70a4db * 2019: aaaaad6ac95b402fe18d019d67897ced6b316ee0
2021-03-01net: extend Sock with methods for robust send & read until terminatorVasil Dimov
Introduce two high level, convenience methods in the `Sock` class: * `SendComplete()`: keep trying to send the specified data until either successfully sent all of it, timeout or interrupted. * `RecvUntilTerminator()`: read until a terminator is encountered (never after it), timeout or interrupted. These will be convenient in the I2P SAM implementation. `SendComplete()` can also be used in the SOCKS5 implementation instead of calling `send()` directly.
2021-03-01net: dedup MSG_NOSIGNAL and MSG_DONTWAIT definitionsVasil Dimov
Deduplicate `MSG_NOSIGNAL` and `MSG_DONTWAIT` definitions from `net.cpp` and `netbase.cpp` to `compat.h` where they can also be reused by other code.
2020-12-31scripted-diff: Bump copyright headersMarcoFalke
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT-
2020-10-22net: Drop unneeded Windows headers in compat.hHennadii Stepanov
No interface from the mswsock.h header is used. According to https://docs.microsoft.com/en-us/windows/win32/winsock/creating-a-basic-winsock-application "The Winsock2.h header file internally includes core elements from the Windows.h header file, so there is not usually an #include line for the Windows.h header file in Winsock applications."
2020-08-20Move Win32 defines to configure.ac to ensure they are globally definedLuke Dashjr
common.vcxproj used for MSVC builds
2019-01-23windows: Set _WIN32_WINNT to 0x0601 (Windows 7)Chun Kuan Lee
Also remove all defines in many places and define it in configure stage to keep consistency.
2018-12-03Implement poll() on systems which support it properly.Patrick Strateman
This eliminates the restriction on maximum socket descriptor number.
2018-11-14Drop defunct IS_TRIVIALLY_CONSTRUCTIBLE handling from prevector.hBen Woosley
It's now only referenced from the bench, so leave it there. This allows us to drop the associated includes as well.
2018-08-23Make IS_TRIVIALLY_CONSTRUCTIBLE consistent on GCC < 5Ben Woosley
std::is_trivially_constructible<T> is equivalent to std::is_trivially_default_constructible<T> std::has_trivial_default_constructor<T> is the GCC < 5 name for std::is_trivially_default_constructible<T> std::is_trivial was also used when compiling with clang, due to clang's use of __GNUC__. Test __clang__ to target the intended implementations.
2018-07-27Update copyright headers to 2018DrahtBot
2018-04-16net: Minor accumulated cleanupsThomas Snider
2018-02-27Add new prevector benchmarks.Evan Klitzke
This prepares for a series of two additional commits which optimize prevector performance.
2018-01-12Trivial: Fix #include sys/fcntl.h to just fcntl.h (without sys/)Jan Sarenik
http://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html http://man7.org/linux/man-pages/man2/fcntl.2.html
2018-01-03Increment MIT Licence copyright header year on files modified in 2017Akira Takizawa
2017-12-13Merge #11558: Minimal code changes to allow msvc compilationWladimir J. van der Laan
fbf327b Minimal code changes to allow msvc compilation. (Aaron Clauson) Pull request description: These changes are required to allow the Bitcoin source to build with Microsoft's C++ compiler (#11562 is also required). I looked around for a better place for the typedef of ssize_t which is in random.h. The best candidate looks like src/compat.h but I figured including that header in random.h is a bigger change than the typedef. Note that the same typedef is in at least two other places including the OpenSSL and Berkeley DB headers so some of the Bitcoin code already picks it up. Tree-SHA512: aa6cc6283015e08ab074641f9abdc116c4dc58574dc90f75e7a5af4cc82946d3052370e5cbe855fb6180c00f8dc66997d3724ff0412e4b7417e51b6602154825
2017-11-16scripted-diff: Replace #include "" with #include <> (ryanofsky)MeshCollider
-BEGIN VERIFY SCRIPT- for f in \ src/*.cpp \ src/*.h \ src/bench/*.cpp \ src/bench/*.h \ src/compat/*.cpp \ src/compat/*.h \ src/consensus/*.cpp \ src/consensus/*.h \ src/crypto/*.cpp \ src/crypto/*.h \ src/crypto/ctaes/*.h \ src/policy/*.cpp \ src/policy/*.h \ src/primitives/*.cpp \ src/primitives/*.h \ src/qt/*.cpp \ src/qt/*.h \ src/qt/test/*.cpp \ src/qt/test/*.h \ src/rpc/*.cpp \ src/rpc/*.h \ src/script/*.cpp \ src/script/*.h \ src/support/*.cpp \ src/support/*.h \ src/support/allocators/*.h \ src/test/*.cpp \ src/test/*.h \ src/wallet/*.cpp \ src/wallet/*.h \ src/wallet/test/*.cpp \ src/wallet/test/*.h \ src/zmq/*.cpp \ src/zmq/*.h do base=${f%/*}/ relbase=${base#src/} sed -i "s:#include \"\(.*\)\"\(.*\):if test -e \$base'\\1'; then echo \"#include <\"\$relbase\"\\1>\\2\"; else echo \"#include <\\1>\\2\"; fi:e" $f done -END VERIFY SCRIPT-
2017-11-10Minimal code changes to allow msvc compilation.Aaron Clauson
2017-07-22Move CloseSocket out of SetSocketNonBlocking and pass SOCKET by const ↵Dag Robole
reference in SetSocket* functions
2017-03-05compat: use `unsigned int` instead of `u_int`Wladimir J. van der Laan
`u_int` is not available on some platforms (not sure what standard it's supposed to be part of), we don't use it anywhere else, and it doesn't hurt to simply write `unsigned int` out here.
2017-03-05build: cleanup: define MSG_DONTWAIT/MSG_NO_SIGNAL locallyWladimir J. van der Laan
Define MSG_DONTWAIT and MSG_NO_SIGNAL in the implementation files that use them (`net.cpp` and `netbase.cpp`), instead of compat.h which is included all over the place. This avoids putting them in the global namespace, as defining them as 0 is a hack that works for our specific usage, but it is not a general solution. Also makes sure they are defined only once so the `!defined(MSG_x)` guard can go.
2017-03-05build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNALWladimir J. van der Laan
Instead of the WIN32-specific workaround, detect lack of `MSG_DONTWAIT` in the build system. This allows other platforms without `MSG_DONTWAIT` to work too.
2016-12-31Increment MIT Licence copyright header year on files modified in 2016isle2983
Edited via: $ contrib/devtools/copyright_header.py update .
2016-11-29Include select.h when WIN32 is not definedIvo van der Sangen
2016-05-05don't run ThreadMessageHandler at lowered priorityKaz Wesley
There's no clear reason ThreadMessageHandler should be low priority. Fixes #8010 (priority inversion).
2015-12-13Bump copyright headers to 2015MarcoFalke
2015-10-22Set TCP_NODELAY on P2P sockets.Gregory Maxwell
Nagle appears to be a significant contributor to latency now that the static sleeps are gone. Most of our messages are relatively large compared to IP + TCP so I do not expect this to create enormous overhead. This may also reduce traffic burstyness somewhat.
2015-07-20Fix warning introduced by #6412Wladimir J. van der Laan
SOCKET are defined as unsigned integers, thus always >=0.
2015-07-10Test whether created sockets are select()ablePieter Wuille
2014-12-19Added "Core" to copyright headerssandakersmann
Github-Pull: #5494 Rebased-From: 15de949bb9277e442302bdd8dee299a8d6deee60
2014-12-16Remove references to X11 licenceMichael Ford
2014-11-26Include missing config/bitcoin-config.h.Pavel Janík
2014-11-24Check for strnlen and provide it if it is not found.Pavel Janík
2014-11-03Fix all header definesPavel Janík
2014-08-26Move `S_I*` constants and `MSG_NOSIGNAL` to compat.hWladimir J. van der Laan
2014-08-26Move SetThreadPriority implementation to util.cpp instead of the headerWladimir J. van der Laan
Put the THREAD_* and PRIO_ constants in compat.h.
2014-08-08small net cleanupPhilip Kaufmann
- add comment for disabling sigpipe - add closing comment in compat.h - remove redundant check in net.h
2014-07-17Convert closesocket 'compat wrapper' to function in netbaseWladimir J. van der Laan
Simpler alternative to #4348. The current setup with closesocket() is strange. It poses as a compatibility wrapper but adds functionality. Rename it and make it a documented utility function in netbase. Code movement only, zero effect on the functionality.
2014-05-02reorder includes to compile on OpenBSDFabian Raetz
From getifaddr(3) manual: "If both <net/if.h> and <ifaddrs.h> are being included, <net/if.h> must be included before <ifaddrs.h>" http://www.openbsd.org/cgi-bin/man.cgi?query=getifaddrs&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html
2013-11-29Merge pull request #3309Wladimir J. van der Laan
9ac5a01 Move types.h include before ifaddres.h for u_int declaration (Robert Backhaus)
2013-11-27prevent Windows redefinition warning cause by compat.hPhilip Kaufmann
2013-11-22Move types.h include before ifaddres.h for u_int declarationRobert Backhaus
2013-11-10Cleanup code using forward declarations.Brandon Dahler
Use misc methods of avoiding unnecesary header includes. Replace int typedefs with int##_t from stdint.h. Replace PRI64[xdu] with PRI[xdu]64 from inttypes.h. Normalize QT_VERSION ifs where possible. Resolve some indirect dependencies as direct ones. Remove extern declarations from .cpp files.
2013-10-20Bump Year Number to 2013super3
2013-10-11prevent compiler redefinition warningsPhilip Kaufmann
- I observed a massive amount of redefinition warnings after #3071, which are silenced by this patch - uses the same style as we do in other places, where we define _WIN32_WINNT
2013-09-05autotools: switch to autotools buildsystemCory Fields
2013-07-24cleanup compat.h Windows stuffPhilip Kaufmann
- remove an unneded include for mswsock.h as we use winsock2.h anyway - move typedef u_int SOCKET; into the #ifndef WIN32 part - remove typedef int socklen_t; as this is defined in ws2tcpip.h