problem: doesn't pass error details from upstream

fix: #42
This commit is contained in:
Igor Artamonov
2020-08-10 22:18:54 -04:00
parent 2abe3023b6
commit b5daceeff5
30 changed files with 325 additions and 103 deletions

View File

@@ -8,19 +8,21 @@ interface CallHandler {
private Object result
private Integer errorCode
private String errorMessage
private Object errorDetails
Result(Object result, Integer errorCode, String errorMessage) {
Result(Object result, Integer errorCode, String errorMessage, Object errorDetails) {
this.result = result
this.errorCode = errorCode
this.errorMessage = errorMessage
this.errorDetails = errorDetails
}
static Result ok(Object result) {
return new Result(result, null, null)
return new Result(result, null, null, null)
}
static Result error(int errorCode, String errorMessage) {
return new Result(null, errorCode, errorMessage)
static Result error(int errorCode, String errorMessage, Object details = null) {
return new Result(null, errorCode, errorMessage, details)
}
boolean isResult() {
@@ -38,5 +40,9 @@ interface CallHandler {
String getErrorMessage() {
return errorMessage
}
Object getErrorDetails() {
return errorDetails
}
}
}

View File

@@ -44,6 +44,9 @@ class SimpleUpstream {
code : result.getErrorCode(),
message: result.getErrorMessage()
]
if (result.getErrorDetails() != null) {
resultJson["error"]["data"] = result.getErrorDetails()
}
}
resp.status(200)
resp.header("content-type", "application/json")

View File

@@ -19,6 +19,11 @@ class TestcaseHandler implements CallHandler {
&& params[0].to?.toLowerCase() == "0x542156d51D10Db5acCB99f9Db7e7C91B74E80a2c".toLowerCase()) {
return Result.error(-32015, "VM execution error.")
}
// https://github.com/emeraldpay/dshackle/issues/35 (second)
if (method == "eth_call"
&& params[0].to?.toLowerCase() == "0x8ee2a5aca4f88cb8c757b8593d0734855dcc0eba".toLowerCase()) {
return Result.error(-32015, "VM execution error.", "revert: SafeMath: division by zero")
}
// https://github.com/emeraldpay/dshackle/issues/43
if (method == "debug_traceTransaction"
&& params[0].toLowerCase() == "0xd949bc0fe1a5d16f4522bc47933554dcc4ada0493ff71ee1973b2410257af9fe".toLowerCase()) {