commands/http: Fixed panics when unmarshaling command output without a set Command.Type
Matt Bell committed
Jan 18, 2015 at 17:47 UTC
5589021a1d3c23391512fdeb29fa500c6e7d775e
1 file changed
+19
-6
commands/http/client.go
+19
-6
@@ -153,8 +153,14 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
153
outputType := reflect.TypeOf(req.Command().Type)
154
155
for {
156
- v := reflect.New(outputType).Interface()
157
- err := dec.Decode(v)
156
+ var v interface{}
157
+ var err error
158
+ if outputType != nil {
159
+ v = reflect.New(outputType).Interface()
160
+ err = dec.Decode(v)
161
+ } else {
162
+ err = dec.Decode(&v)
163
+ }
164
if err != nil && err != io.EOF {
165
fmt.Println(err.Error())
166
return
@@ -200,13 +206,20 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
206
207
} else {
208
outputType := reflect.TypeOf(req.Command().Type)
203
- v := reflect.New(outputType).Interface()
204
- err = dec.Decode(v)
209
+ var v interface{}
210
+
211
+ if outputType != nil {
212
+ v = reflect.New(outputType).Interface()
213
+ err = dec.Decode(v)
214
+ } else {
215
+ err = dec.Decode(&v)
216
+ }
217
if err != nil && err != io.EOF {
218
return nil, err
219
}
208
-
209
- res.SetOutput(v)
220
+ if v != nil {
221
+ res.SetOutput(v)
222
+ }
223
}
224
225
return res, nil