This commit is contained in:
Dominik Hirzel 2017-06-08 08:17:14 +00:00 committed by GitHub
commit 49928d3898

View file

@ -163,22 +163,25 @@ func parseRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, Error) {
return nil, false, &invalidMessageError{err.Error()} return nil, false, &invalidMessageError{err.Error()}
} }
// subscribe are special, they will always use `subscribeMethod` as first param in the payload // shh_subscribe should not be handled in a special way
if strings.HasSuffix(in.Method, subscribeMethodSuffix) { if !strings.HasPrefix(in.Method, "shh_") {
reqs := []rpcRequest{{id: &in.Id, isPubSub: true}} // subscribe are special, they will always use `subscribeMethod` as first param in the payload
if len(in.Payload) > 0 { if strings.HasSuffix(in.Method, subscribeMethodSuffix) {
// first param must be subscription name reqs := []rpcRequest{{id: &in.Id, isPubSub: true}}
var subscribeMethod [1]string if len(in.Payload) > 0 {
if err := json.Unmarshal(in.Payload, &subscribeMethod); err != nil { // first param must be subscription name
log.Debug(fmt.Sprintf("Unable to parse subscription method: %v\n", err)) var subscribeMethod [1]string
return nil, false, &invalidRequestError{"Unable to parse subscription request"} if err := json.Unmarshal(in.Payload, &subscribeMethod); err != nil {
} log.Debug(fmt.Sprintf("Unable to parse subscription method: %v\n", err))
return nil, false, &invalidRequestError{"Unable to parse subscription request"}
}
reqs[0].service, reqs[0].method = strings.TrimSuffix(in.Method, subscribeMethodSuffix), subscribeMethod[0] reqs[0].service, reqs[0].method = strings.TrimSuffix(in.Method, subscribeMethodSuffix), subscribeMethod[0]
reqs[0].params = in.Payload reqs[0].params = in.Payload
return reqs, false, nil return reqs, false, nil
}
return nil, false, &invalidRequestError{"Unable to parse subscription request"}
} }
return nil, false, &invalidRequestError{"Unable to parse subscription request"}
} }
if strings.HasSuffix(in.Method, unsubscribeMethodSuffix) { if strings.HasSuffix(in.Method, unsubscribeMethodSuffix) {
@ -215,23 +218,26 @@ func parseBatchRequest(incomingMsg json.RawMessage) ([]rpcRequest, bool, Error)
id := &in[i].Id id := &in[i].Id
// subscribe are special, they will always use `subscriptionMethod` as first param in the payload // shh_subscribe should not be handled in a special way
if strings.HasSuffix(r.Method, subscribeMethodSuffix) { if !strings.HasPrefix(r.Method, "shh_") {
requests[i] = rpcRequest{id: id, isPubSub: true} // subscribe are special, they will always use `subscriptionMethod` as first param in the payload
if len(r.Payload) > 0 { if strings.HasSuffix(r.Method, subscribeMethodSuffix) {
// first param must be subscription name requests[i] = rpcRequest{id: id, isPubSub: true}
var subscribeMethod [1]string if len(r.Payload) > 0 {
if err := json.Unmarshal(r.Payload, &subscribeMethod); err != nil { // first param must be subscription name
log.Debug(fmt.Sprintf("Unable to parse subscription method: %v\n", err)) var subscribeMethod [1]string
return nil, false, &invalidRequestError{"Unable to parse subscription request"} if err := json.Unmarshal(r.Payload, &subscribeMethod); err != nil {
log.Debug(fmt.Sprintf("Unable to parse subscription method: %v\n", err))
return nil, false, &invalidRequestError{"Unable to parse subscription request"}
}
requests[i].service, requests[i].method = strings.TrimSuffix(r.Method, subscribeMethodSuffix), subscribeMethod[0]
requests[i].params = r.Payload
continue
} }
requests[i].service, requests[i].method = strings.TrimSuffix(r.Method, subscribeMethodSuffix), subscribeMethod[0] return nil, true, &invalidRequestError{"Unable to parse (un)subscribe request arguments"}
requests[i].params = r.Payload
continue
} }
return nil, true, &invalidRequestError{"Unable to parse (un)subscribe request arguments"}
} }
if strings.HasSuffix(r.Method, unsubscribeMethodSuffix) { if strings.HasSuffix(r.Method, unsubscribeMethodSuffix) {