diff --git a/plugins/client.go b/plugins/client.go index b64f0d6..392543b 100644 --- a/plugins/client.go +++ b/plugins/client.go @@ -60,17 +60,21 @@ type Client struct { // It will retry for 30 seconds if a failure occurs when calling. func (c *Client) Call(serviceMethod string, args interface{}, ret interface{}) error { var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(args); err != nil { - return err + if args != nil { + if err := json.NewEncoder(&buf).Encode(args); err != nil { + return err + } } body, err := c.callWithRetry(serviceMethod, &buf, true) if err != nil { return err } defer body.Close() - if err := json.NewDecoder(body).Decode(&ret); err != nil { - logrus.Errorf("%s: error reading plugin resp: %v", serviceMethod, err) - return err + if ret != nil { + if err := json.NewDecoder(body).Decode(&ret); err != nil { + logrus.Errorf("%s: error reading plugin resp: %v", serviceMethod, err) + return err + } } return nil } diff --git a/plugins/client_test.go b/plugins/client_test.go index 4fed491..3def6e2 100644 --- a/plugins/client_test.go +++ b/plugins/client_test.go @@ -63,6 +63,10 @@ func TestEchoInputOutput(t *testing.T) { if !reflect.DeepEqual(output, m) { t.Fatalf("Expected %v, was %v\n", m, output) } + err = c.Call("Test.Echo", nil, nil) + if err != nil { + t.Fatal(err) + } } func TestBackoff(t *testing.T) {