Skip to content

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

@TheBlueMatt@ariard@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Fix incorrect docs/disconnect handling in peer_handler by TheBlueMatt · Pull Request #512 · lightningdevkit/rust-lightning · GitHub
Skip to content

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

@TheBlueMatt@ariard@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix incorrect docs/disconnect handling in peer_handler by TheBlueMatt · Pull Request #512 · lightningdevkit/rust-lightning · GitHub
Skip to content

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

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

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

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

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

@TheBlueMatt@ariard@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix incorrect docs/disconnect handling in peer_handler by TheBlueMatt · Pull Request #512 · lightningdevkit/rust-lightning · GitHub
Skip to content

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

@TheBlueMatt@ariard@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix incorrect docs/disconnect handling in peer_handler by TheBlueMatt · Pull Request #512 · lightningdevkit/rust-lightning · GitHub
Skip to content

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

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

Fix incorrect docs/disconnect handling in peer_handler - #512

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs
Feb 21, 2020
Merged

Fix incorrect docs/disconnect handling in peer_handler#512
TheBlueMatt merged 1 commit into
lightningdevkit:masterfrom
TheBlueMatt:2020-02-peer_handler-docs

Conversation

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat.

Frankly I'm not sure if lightning-net-tokio complies with this properly, but I'm gonna update #472 with the correct behavior in a sec.

@TheBlueMattTheBlueMatt added this to the 0.0.10 milestone Feb 20, 2020

@ariardariard left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ACK 1f53c04 if you don't want to fix comments

Comment threadlightning/src/ln/peer_handler.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs Outdated
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 1f53c04 to edd732eCompareFebruary 21, 2020 00:32
@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Rewrote a ton of docs, and renamed a few functions to clarify what they do.

@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from edd732e to 6304698CompareFebruary 21, 2020 01:31
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).
Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.
We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
@TheBlueMatt
TheBlueMattforce-pushed the 2020-02-peer_handler-docs branch from 6304698 to faaa4d2CompareFebruary 21, 2020 01:51
@ariard

Copy link
Copy Markdown

ACK faaa4d2

@TheBlueMatt
TheBlueMatt merged commit 2be0810 into lightningdevkit:masterFeb 21, 2020
@jkczyz

Copy link
Copy Markdown
Contributor

The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

Is this suppose to say "nearly always be called"?

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Oops, yea, the commit message is off there. At least the code comments are right :)

@jkczyzjkczyz 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.

Oops, yea, the commit message is off there. At least the code comments are right :)

Weren't you suppose to give me a chance to review this if assigning it to me? FWIW, I was writing these comments before I noticed it was already merged.

Comment on lines 51 to +52
/// careful to ensure you don't have races whereby you might register a new connection with an fd
/// the same as a yet-to-be-disconnect_event()-ed.
/// the same as a yet-to-be-socket_disconnected()-ed.

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.

I don't understand what the emphasized is saying:

whereby you might register a new connection with an fd the same as a yet-to-be-socket_disconnected()-ed.

Something seems grammatically off or perhaps I'm just not parsing this correctly.

///
/// Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
/// Note that in the disconnected case, a disconnect_event must still fire and further write
/// Note that in the disconnected case, a socket_disconnected must still fire and further write

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.

Drop "a".

/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to

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.

Drop "obviously". The reason for including the comment is that this behavior is not obvious.

Comment on lines -70 to +73
/// more calls to write_event, read_event or disconnect_event may be made with this descriptor.
/// No disconnect_event should be generated as a result of this call, though obviously races
/// may occur whereby disconnect_socket is called after a call to disconnect_event but prior to
/// that event completing.
/// more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
/// this descriptor. No socket_disconnected call should be generated as a result of this call,
/// though obviously races may occur whereby disconnect_socket is called after a call to
/// socket_disconnected but prior to that event completing.

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.

"No disconnect_event" was changed to "No socket_disconnected call" here but later in the comment "event" is still used.

prior to that event completing

Rather than replacing "event" with "call", I'd recommend re-wording to something a little less ambiguous such as:

prior to the former completing

/// generate no further read_event/write_buffer_space_avail calls for the descriptor, only
/// triggering a single socket_disconnected call (unless it was provided in response to a
/// new_*_connection event, in which case no such socket_disconnected() must be generated and the
/// socket be silently disconencted).

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.

grammar: must be

/// but must NOT be called if a PeerHandleError was provided out of a new_\*\_connection event!
/// This must only be called if the socket has been disconnected by the peer or your own
/// decision to disconnect it and must NOT be called in any case where other parts of this
/// library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect

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.

How is the user supposed to differentiate between their own call to disconnect_socket and that of this library?

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.

Hmm, disconnect_socket is different from socket_disconnected - I suppose a user could call disconnect_socket on their own Descriptor, but in general I presumed they wouldn't (and would just call shutdown(2)).

@TheBlueMatt

Copy link
Copy Markdown
CollaboratorAuthor

Weren't you suppose to give me a chance to review this if assigning it to me?

Oops, forgot I assigned you on this one before merging, in any case, not really a big deal either way. Post-merge review is 98% as good as pre-merge review IMO :)

@TheBlueMattTheBlueMatt modified the milestones: 0.0.10, 0.0.11Feb 26, 2020
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

@TheBlueMatt@ariard@jkczyz