Walletshield client2 does not reliably handle concurrent requests from wallets.
In comparison walletshield+client1 handles this very well.
This can be tested with the local docker test network.
# Start local docker test network
cd docker
make start wait
# Start walletshield with the local test network running, for example:
cd apps/walletshield
make
./walletshield -config /tmp/katzenpost.opt/docker/voting_mixnet/client2/client.toml -listen :7070
# Then run RPC tests in separate terminals:
./tests/e2e/walletshield/test.sh
Example walletshield log ERRORs:
12:28:36.817 DEBU client2/incomingConn: read length prefix
12:28:36.817 DEBU client2/incomingConn: length prefix is 470
12:28:36.817 DEBU client2/incomingConn: after blob read
12:28:36.817 DEBU client2/incomingConn: before Unmarshal
12:28:36.817 DEBU client2/incomingConn: after Unmarshal
12:28:36.817 DEBU client2/incomingConn: incomingConn received message
12:28:36.817 DEBU client2/incomingConn: recvRequest TCP
12:28:36.817 INFO client2/incomingConn: Received Request from peer application.
12:28:36.830 DEBU client2/incomingConn: sendResponse BEFORE conn.Write
12:28:36.830 DEBU client2/incomingConn: sendResponse AFTER conn.Write
12:28:36.830 DEBU thinclient: MessageSentEvent
12:28:36.830 INFO thinclient: MessageSentEvent
12:28:38.436 DEBU client2/incomingConn: sendResponse BEFORE conn.Write
12:28:38.436 DEBU client2/incomingConn: sendResponse AFTER conn.Write
12:28:38.437 DEBU thinclient: MessageReplyEvent
12:28:38.437 INFO thinclient: MessageReplyEvent
ERRO walletshield:: Failed to send message: received MessageReplyEvent with unexpected SURB ID
12:28:38.479 DEBU client2/incomingConn: sendResponse BEFORE conn.Write
12:28:38.479 DEBU thinclient: MessageReplyEvent
12:28:38.479 INFO thinclient: MessageReplyEvent
12:28:38.479 DEBU client2/incomingConn: sendResponse AFTER conn.Write
ERRO walletshield:: Failed to send message: received MessageReplyEvent with unexpected SURB ID
INFO walletshield:: Received HTTP request for /bitcoin
Walletshield client2 does not reliably handle concurrent requests from wallets.
In comparison walletshield+client1 handles this very well.
This can be tested with the local docker test network.
Example walletshield log ERRORs: