diff --git a/src.ts/_tests/test-providers-data.ts b/src.ts/_tests/test-providers-data.ts index 20c042017..69a6142da 100644 --- a/src.ts/_tests/test-providers-data.ts +++ b/src.ts/_tests/test-providers-data.ts @@ -207,11 +207,21 @@ describe("Test Provider Transaction operations", function() { // Cloudflare doesn't return the root in legacy receipts; but it isn't // *actually* that important, so we'll give it a pass... - if (providerName === "CloudflareProvider") { + if (providerName === "CloudflareProvider" || providerName === "AnkrProvider" || providerName === "PocketProvider") { test = Object.assign({ } , test, { root: undefined }); } + //if (providerName === "PocketProvider") { + //} + assertReceipt(receipt, test); }; }); + + forEach("test lookupAddress(addr) == null", testReceipt, (providerName, test) => { + return async (provider) => { + const name = await provider.lookupAddress("0x0123456789012345678901234567890123456789") + assert.ok(name == null, "name == null"); + }; + }); }); diff --git a/src.ts/providers/abstract-provider.ts b/src.ts/providers/abstract-provider.ts index fb2d64e0d..511db792f 100644 --- a/src.ts/providers/abstract-provider.ts +++ b/src.ts/providers/abstract-provider.ts @@ -20,7 +20,7 @@ import { Transaction } from "../transaction/index.js"; import { concat, dataLength, dataSlice, hexlify, isHexString, getBigInt, getBytes, getNumber, - isCallException, makeError, assert, assertArgument, + isCallException, isError, makeError, assert, assertArgument, FetchRequest, toBeArray, toQuantity, defineProperties, EventPayload, resolveProperties, @@ -988,14 +988,21 @@ export class AbstractProvider implements Provider { ], this); const name = await resolverContract.name(node); + // Failed forward resolution const check = await this.resolveName(name); - if (check !== address) { - console.log("FAIL", address, check); - } + if (check !== address) { return null; } return name; } catch (error) { - console.log("TEMP", error); + // No data was returned from the resolver + if (isError(error, "BAD_DATA") && error.value === "0x") { + return null; + } + + // Something reerted + if (isError(error, "CALL_EXCEPTION")) { return null; } + + throw error; } return null;