Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Tmpctx cleanups - #1295

Merged
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups
Apr 3, 2018
Merged

Tmpctx cleanups#1295
cdecker merged 4 commits into
ElementsProject:masterfrom
rustyrussell:tmpctx-cleanups

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

No description provided.

@ZmnSCPxjZmnSCPxj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly OK to me, but how about also adding io_poll_override(&debug_poll) to setup_subdaemon? I know not all subdaemons use io_loop but it is benign if not used, right? (and it will get compiled in anyway since common/status uses the daemon_conn, which uses ccan/io/io). Although maybe channeld does something too magic for this?

@rustyrussell

rustyrussell commented Mar 28, 2018

Copy link
Copy Markdown
CollaboratorAuthor

True, we could do that. No, they don't link against debug_poll. Let me try something else.

Comment threadcommon/io_debug.c
@@ -1,17 +0,0 @@
#include <ccan/err/err.h>

@ZmnSCPxjZmnSCPxjMar 29, 2018

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed but the lightningd/Makefilechanneld/Makefile still seems to use it? They refer to common/io_debug.o.

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Fixed and rebased...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
I didn't convert all tests: they can still use a standalone context.
It's just marginally more efficient to share the libwally one for all
our daemons which link against it anyway.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
In particular, the main daemon and subdaemons share the backtrace code,
with hooks for logging.
The daemon hook inserts the io_poll override, which means we no longer
need io_debug.[ch]. Though most daemons don't need it, they still link
against ccan/io, so it's harmess (suggested by @ZmnSCPxj).
This was tested manually to make sure we get backtraces still.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 4bde639

Looks fine to me, although, there is a valgrind warn in a CI run, but I feel it could be rerun?

…RACE
Valgrind gets upset.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@ZmnSCPxj

Copy link
Copy Markdown
Contributor

ACK 3c3fcf0

@cdecker
cdecker merged commit feb6b52 into ElementsProject:masterApr 3, 2018
vincenzopalazzo added a commit to vincenzopalazzo/lightning that referenced this pull request Aug 17, 2026
…ec contradiction
Add a failing C unit test that reproduces the BOLT 12 spec
contradiction raised on lightning/bolts#1295.
The writer rule in `12-offer-encoding.md` (lines 1041-1049, head
db3eff3a54) mandates that after a `proof_omitted_tlvs` entry of
`239` the next entry MUST be `1000000000`, because the writer skips
past the signature/payer-proof TLV range (240..999999999).
The reader rule (lines 1065-1067) only accepts an entry that is
`prev + 1` or `<included TLV> + 1`, with no carve-out for the
239 -> 1000000000 jump.
A reader applying the spec literally rejects a marker sequence the
writer rule mandates.
CLN's reader in common/bolt12_proof.c lines 339-388 is a literal
transcription of the bogus reader rule (specifically the
`omitted != prev_omitted + 1` branch at line 379).
Fed the writer-rule-mandated sequence [1, 2, ..., 239, 1000000000]
it returns an error on the 1000000000 entry.
The new test in common/test/run-bolt12_proof_marker_jump.c builds
the minimum tlv_payer_proof needed to reach the marker-validation
loop and asserts check_payer_proof returns NULL.
It is expected to fail on current master, the failure IS the
reproduction. The fix belongs in the spec PR first (amend reader
rule 1065) and only then mirrored into CLN.
The same contradiction is reproduced on the Rust-Lightning side in
lightningdevkit/rust-lightning#4297, test
spec_writer_reader_rules_contradict_on_gap_jump in
lightning/src/offers/merkle.rs (commit 0034c79ae).
Changelog-None
Link: lightning/bolts#1295 (comment)
Link: lightningdevkit/rust-lightning#4297
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Sign up for freeto 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.

3 participants

@rustyrussell@ZmnSCPxj@cdecker