mirror of
https://github.com/akyaiy/GoSally-mvp.git
synced 2026-01-05 14:12:25 +00:00
fix bug with empty result and non table result
This commit is contained in:
@@ -25,6 +25,12 @@ func NewError(code int, message string, data any, id *json.RawMessage) *RPCRespo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewResponse(result any, id *json.RawMessage) *RPCResponse {
|
func NewResponse(result any, id *json.RawMessage) *RPCResponse {
|
||||||
|
if result == nil {
|
||||||
|
return &RPCResponse{
|
||||||
|
JSONRPC: JSONRPCVersion,
|
||||||
|
ID: id,
|
||||||
|
}
|
||||||
|
}
|
||||||
return &RPCResponse{
|
return &RPCResponse{
|
||||||
JSONRPC: JSONRPCVersion,
|
JSONRPC: JSONRPCVersion,
|
||||||
ID: id,
|
ID: id,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func write(nid string, w http.ResponseWriter, msg *RPCResponse) error {
|
|||||||
msg.Salt = generateSalt()
|
msg.Salt = generateSalt()
|
||||||
if msg.Result != nil {
|
if msg.Result != nil {
|
||||||
msg.Checksum = generateChecksum(msg.Result)
|
msg.Checksum = generateChecksum(msg.Result)
|
||||||
} else {
|
} else if msg.Error != nil {
|
||||||
msg.Checksum = generateChecksum(msg.Error)
|
msg.Checksum = generateChecksum(msg.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,8 +149,6 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
L.SetField(inTable, "params", paramsTable)
|
L.SetField(inTable, "params", paramsTable)
|
||||||
|
|
||||||
outTable := L.NewTable()
|
outTable := L.NewTable()
|
||||||
resultTable := L.NewTable()
|
|
||||||
L.SetField(outTable, "result", resultTable)
|
|
||||||
|
|
||||||
L.SetField(inTable, "address", lua.LString(r.RemoteAddr))
|
L.SetField(inTable, "address", lua.LString(r.RemoteAddr))
|
||||||
L.SetField(sessionMod, "request", inTable)
|
L.SetField(sessionMod, "request", inTable)
|
||||||
@@ -518,11 +516,14 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
resultVal := outTbl.RawGetString("result")
|
resultVal := outTbl.RawGetString("result")
|
||||||
payload := make(map[string]any)
|
if resultVal != lua.LNil {
|
||||||
if tbl, ok := resultVal.(*lua.LTable); ok {
|
payload := make(map[string]any)
|
||||||
tbl.ForEach(func(k, v lua.LValue) { payload[k.String()] = ConvertLuaTypesToGolang(v) })
|
if tbl, ok := resultVal.(*lua.LTable); ok {
|
||||||
} else {
|
tbl.ForEach(func(k, v lua.LValue) { payload[k.String()] = ConvertLuaTypesToGolang(v) })
|
||||||
payload["message"] = ConvertLuaTypesToGolang(resultVal)
|
} else {
|
||||||
|
return rpc.NewResponse(ConvertLuaTypesToGolang(resultVal), req.ID)
|
||||||
|
}
|
||||||
|
return rpc.NewResponse(payload, req.ID)
|
||||||
}
|
}
|
||||||
return rpc.NewResponse(payload, req.ID)
|
return rpc.NewResponse(nil, req.ID)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user