gun icon indicating copy to clipboard operation
gun copied to clipboard

Silent Failure on Incorrect Certificate and Delayed put

Open gustavcorpas opened this issue 2 years ago • 1 comments

Description

I've encountered an issue where subsequent calls to put break if a wrong certificate is passed in. The issue is observed when there's a delay between calls, causing both node.put and user.put to silently fail.

Steps to Reproduce

  1. Setup an authenticated user with gun.user().
  2. Generate a new key pair with SEA.pair().
  3. Get a node from the pub-key of the pair.
  4. Pass in a wrong certificate to node.put.
  5. Wait for one second.
  6. Call user.put.

Expected result

  • Passing in a wrong certificate should yield an error in the ack for node.put.
  • Calling user.put should put data on the graph.

Actual result

  • Passing in a wrong certificate silently fails for node.put.
  • Calling user.put silently fails.

Noteworthy

  • Removing the delay makes the call to user.put work.
  • The options object is mutated. This has been discussed before in: #1048 #1093

Example code:

           (async () => {

                // ... user is an authenticated gun.user().

                const pair1 = await SEA.pair();
                const node = gun.get(`~${pair1.pub}`);
                
                node.get("public").map().once(res => console.log(res));
                user.get("public").map().once(res => console.log(res));

                const options = { opt: { cert: "this-is-not-a-valid-certificate" }};

                node.get("public").get("item").put("node says hello", (ack) => {
                    console.log(ack);
                }, options);

                console.log(options); // this is mutated btw.

                await delay(); // wait for one second.

                user.get("public").get("item").put("user says hello", (ack) => {
                    console.log(ack)
                });   

            })();

gustavcorpas avatar Oct 19 '23 17:10 gustavcorpas

Thanks for finding this and making an excellent issue + code to add to tests. IDK my timing to get to it, but if you want to help I can do a video call to get you started on debugging (DM me).

amark avatar Nov 08 '23 22:11 amark