Page MenuHomePhabricator

Merge #17251: net: SocketHandler logs peer id for close and disconnect

Authored by jasonbcox on Wed, Oct 14, 20:52.



04dbdd613fe5c0a742de915e07553614cd4cbf46 [net] SocketHandler: log peer id for close and disconnect (Sjors Provoost)

Pull request description:

When combined with `-logips` this makes it easier to diagnose disconnects.

To test on macOS, find a connection you want to disrupt:

lsof -nP -iTCP:8333 -sTCP:ESTABLISHED

To shut it down gracefully you can use tcpkill or this Python script:

The log should say:

2019-10-25T13:26:55Z socket closed for peer=1
2019-10-25T13:26:55Z disconnecting peer=1
2019-10-25T13:26:55Z Cleared nodestate for peer=1

To shut it down ungracefully I made a patch to the above script, adding a `-force` argument. _Careful, this may result in data corruption_. Then the log should say:

2019-10-25T13:39:57Z socket select error Bad file descriptor (9)
2019-10-25T13:39:57Z socket recv error for peer=0: Bad file descriptor (9)
2019-10-25T13:39:57Z disconnecting peer=0
2019-10-25T13:39:57Z Socket close failed: 35. Error: Bad file descriptor (9)
2019-10-25T13:39:57Z Cleared nodestate for peer=0

Backport of Core PR17251

Test Plan

ninja check check-functional

Diff Detail

rABC Bitcoin ABC
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.