Fix user agent sanitizer
Summary:
The current user agent sanitizer behavior is to drop invalid characters
in the comment section and truncate its length if necessary, along with
putting warnings in log.
Note that due to a bug, invalid chars are actually not dropped from the
comment section despite the log states it.
The current behavior is not really user friend, and the bug could lead
to BIP0014 violation.
This diff moves the checks at init time, to allow for the node startup
to fail with an error message if the requirements on the user agent are
not met. This is actually the same behavior as bitcoin core.
Depends on D2290
Test Plan:
make check ./test/functional/test_runner.py
./src/bitcoind -uacomment=tara:tata, check it returns an error message
at startup and fails to start
./src/qt/bitcoin-qt -uacomment=tara:tata, check it displays an error message in
a popup then exits when the OK button is clicked
./src/qt/bitcoin-qt -uacomment=tara:tata, go to the debug window and check the
user agent matches /Bitcoin ABC:0.18.6(EB32.0; taratata)/
./src/bitcoind -uacomment=taratata ./src/bticoin-cli getnetworkinfo
Check the "subversion" field matches `/Bitcoin ABC:0.18.6(EB32.0;
taratata)/`
echo "uacomment=taratata" > uacomment.conf ./src/bitcoind -conf=$PWD/uacomment.conf ./src/bticoin-cli getnetworkinfo
Check the "subversion" field matches `/Bitcoin ABC:0.18.6(EB32.0;
taratata)/`
echo "uacomment=tara:tata" > uacomment.conf ./src/bitcoind -conf=$PWD/uacomment.conf
Check it returns an error message at startup and fails to start, then
rm uacomment.conf
Reviewers: #bitcoin_abc, deadalnix, jasonbcox
Reviewed By: #bitcoin_abc, deadalnix, jasonbcox
Subscribers: jasonbcox, teamcity, schancel
Differential Revision: https://reviews.bitcoinabc.org/D2275