Skip to content

backport: Merge bitcoin#29404, 28144, 28118#7124

Open
vijaydasmp wants to merge 3 commits intodashpay:developfrom
vijaydasmp:Feb_2026_04
Open

backport: Merge bitcoin#29404, 28144, 28118#7124
vijaydasmp wants to merge 3 commits intodashpay:developfrom
vijaydasmp:Feb_2026_04

Conversation

@vijaydasmp
Copy link

@vijaydasmp vijaydasmp commented Feb 2, 2026

bitcoin backporting
🤕➡️🛌🩹➡️💪⚡💻🔙

@github-actions
Copy link

github-actions bot commented Feb 2, 2026

⚠️ Potential Merge Conflicts Detected

This PR has potential conflicts with the following open PRs:

Please coordinate with the authors of these PRs to avoid merge conflicts.

@vijaydasmp vijaydasmp changed the title Backport: Merge bitcoin/bitcoin#29404 backport : Merge bitcoin#29404 Feb 2, 2026
@vijaydasmp vijaydasmp changed the title backport : Merge bitcoin#29404 backport: Merge bitcoin#29404 Feb 2, 2026
@vijaydasmp vijaydasmp changed the title backport: Merge bitcoin#29404 backport: Merge bitcoin#29404, 28144, 28118 Feb 3, 2026
@github-actions
Copy link

This pull request has conflicts, please rebase.

@github-actions
Copy link

This pull request has conflicts, please rebase.

9d1dbbd scripted-diff: Fix bitcoin_config_h includes (TheCharlatan)

Pull request description:

  As mentioned in bitcoin#26924 (comment) and bitcoin#29263 (comment), it is currently not safe to remove `bitcoin-config.h` includes from headers because some unrelated file might be depending on it.

  See also bitcoin#26972 for discussion.

  Solve this by including the file directly everywhere it's required, regardless of whether or not it's already included by another header.

  There should be no functional change here, but it will allow us to safely remove includes from headers in the future.

  ~I'm afraid it's a bit tedious to reproduce these commits, but it's reasonably straightforward:~
  Edit: See note below

  ```bash
  # All commands executed from the src/ subdir.

  # Collect all tokens from bitcoin-config.h.in
  # Isolate the tokens and remove blank lines
  # Replace newlines with | and remove the last trailing one
  # Collect all files which use these tokens
  # Filter out subprojects (proper forwarding can be verified from Makefiles)
  # Filter out .rc files
  # Save to a text file
  git grep -E -l `grep undef config/bitcoin-config.h.in | cut -d" " -f2 | grep -v '^$' | tr '\n' '|' | sed 's/|$//'` | grep -v -e "^leveldb/" -e "^secp256k1/" -e "^crc32c/" -e "^minisketch/" -e "^Makefile" -e "\.rc$" > files-with-config-include.txt

  # Find all files from the above list which don't include bitcoin-config.h
  git grep -L -E "config/bitcoin-config.h" -- `cat files-with-config-include.txt`

  # Include them manually with the exception of some files in crypto:
  # crypto/sha256_arm_shani.cpp crypto/sha256_avx2.cpp crypto/sha256_sse41.cpp crypto/sha256_x86_shani.cpp
  # These are exceptions which don't use bitcoin-config.h, rather the Makefile.am adds these cppflags manually.

  # Commit changes. This should match the first commit of this PR.

  # Use the same search as above to find all files which DON'T use any config tokens
  git grep -E -L `grep undef config/bitcoin-config.h.in | cut -d" " -f2 | grep -v '^$' | tr '\n' '|' | sed 's/|$//'` | grep -v -e "^leveldb/" -e "^secp256k1/" -e "^crc32c/" -e "^minisketch/" -e "^Makefile" -e "\.rc$" > files-without-config-include.txt

  # Manually remove the includes and commit changes. This should match the second commit of this PR.
  ```

  Edit: I'll keep this old description for posterity, but the manual approach has been replaced with a scripted diff from TheCharlatan

ACKs for top commit:
  maflcko:
    ACK 9d1dbbd 🚪
  TheCharlatan:
    ACK 9d1dbbd
  hebasto:
    ACK 9d1dbbd, I have reviewed the code and it looks OK.
  fanquake:
    ACK 9d1dbbd

Tree-SHA512: f11ddc4ae6a887f96b954a6b77f310558ddb271088a3fda3edc833669c4251b7f392515224bbb8e5f67eb2c799b4ffed3b07d96454e82ec635c686d0df545872
…ching.py

8a20f76 test: drop duplicate getaddrs from p2p_getaddr_caching (Martin Zumsande)
feb0096 test: fix intermittent failure in p2p_getaddr_caching (Martin Zumsande)

Pull request description:

  Fixes bitcoin#28133

  In the consistency check, it's not enough to check that our address/port is unique, only the combination of source and target must be unique. Otherwise, the OS may reuse ports for connections to different `-addrbind`, which was happening in the failed runs.

  While at it, the second commit cleans up duplicate `getaddr` messages in `p2p_getaddr_caching.py` that do nothing but generate `Ignoring repeated "getaddr"` log messages (and cleans up some whitespace the python linter complains about).

ACKs for top commit:
  vasild:
    ACK 8a20f76

Tree-SHA512: eabe4727d7887f729074076f6333a918bba8cb34b8e3baaa83f167b441b0daa24f7c4824abcf03a9538a2ef14b2d826ff19aeffcb93a6c20735253a9678aac9c

Fixing Linting error - 'time' module imported but not used
…ckscheduler RPC

fabef12 refactor: Use EnsureAnyNodeContext (MarcoFalke)
fa16406 test: Add SyncWithValidationInterfaceQueue to mockscheduler RPC (MarcoFalke)

Pull request description:

  There should be no risk or downside in adding a call to `SyncWithValidationInterfaceQueue` here. In fact, it will make tests less brittle. For example,

  * If one sets the timeouts in `test/functional/feature_fee_estimation.py` to `0`, on `master` the test will fail and here it will pass.
  * It may avoid a rare (theoretic) intermittent issue in https://github.com/bitcoin/bitcoin/pull/28108/files#r1268966663

ACKs for top commit:
  TheCharlatan:
    ACK fabef12
  furszy:
    Code review ACK fabef12. Convinced by checking all current tests usages.

Tree-SHA512: c9e9a536a8721d1b3f267a66b40578b34948892301affdcad121ef8e02bf17037305d0dd53aa94b1b064753e66f9cfb31823b916b707a9d812627f502b818003
@vijaydasmp vijaydasmp marked this pull request as ready for review February 26, 2026 11:28
@coderabbitai
Copy link

coderabbitai bot commented Feb 26, 2026

Walkthrough

This pull request refactors the inclusion of the bitcoin-config.h header file across the codebase. The changes systematically add conditional includes of <config/bitcoin-config.h> (guarded by HAVE_CONFIG_H) to numerous source files, while removing these includes from certain header files and other locations. Additionally, minor functional changes are made to RPC node methods (setmocktime and mockscheduler) to use EnsureAnyNodeContext instead of GetContext, and test utilities are updated to improve peer selection filtering and address caching test logic.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description is vague emoji-based text that does not convey meaningful information about the changeset, though the PR objectives clarify it's a Bitcoin backport of three specific PRs. Enhance the PR description to explicitly mention the three Bitcoin PRs being backported (29404, 28144, 28118) and their purposes, replacing or supplementing the emoji-only text.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title directly references the three upstream Bitcoin PRs being backported (29404, 28144, 28118), which accurately reflects the main purpose of the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants