From 32536b25afede40b695931605a7de8c3dbdb0cbc Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 28 Apr 2014 15:18:31 -0700 Subject: [PATCH] packer/rpc: fix interface returns for msgpack [GH-1076] --- packer/rpc/build.go | 10 +++++++--- packer/rpc/post_processor.go | 20 ++++++-------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/packer/rpc/build.go b/packer/rpc/build.go index 78a3a618a..c2e6dceca 100644 --- a/packer/rpc/build.go +++ b/packer/rpc/build.go @@ -21,7 +21,7 @@ type BuildServer struct { type BuildPrepareResponse struct { Warnings []string - Error error + Error *BasicError } func (b *build) Name() (result string) { @@ -34,8 +34,12 @@ func (b *build) Prepare() ([]string, error) { if cerr := b.client.Call("Build.Prepare", new(interface{}), &resp); cerr != nil { return nil, cerr } + var err error = nil + if resp.Error != nil { + err = resp.Error + } - return resp.Warnings, resp.Error + return resp.Warnings, err } func (b *build) Run(ui packer.Ui, cache packer.Cache) ([]packer.Artifact, error) { @@ -90,7 +94,7 @@ func (b *BuildServer) Prepare(args *interface{}, resp *BuildPrepareResponse) err warnings, err := b.build.Prepare() *resp = BuildPrepareResponse{ Warnings: warnings, - Error: err, + Error: NewBasicError(err), } return nil } diff --git a/packer/rpc/post_processor.go b/packer/rpc/post_processor.go index 81789856d..3a22c1a8a 100644 --- a/packer/rpc/post_processor.go +++ b/packer/rpc/post_processor.go @@ -25,14 +25,14 @@ type PostProcessorConfigureArgs struct { } type PostProcessorProcessResponse struct { - Err error + Err *BasicError Keep bool StreamId uint32 } func (p *postProcessor) Configure(raw ...interface{}) (err error) { args := &PostProcessorConfigureArgs{Configs: raw} - if cerr := p.client.Call("PostProcessor.Configure", args, &err); cerr != nil { + if cerr := p.client.Call("PostProcessor.Configure", args, new(interface{})); cerr != nil { err = cerr } @@ -67,13 +67,9 @@ func (p *postProcessor) PostProcess(ui packer.Ui, a packer.Artifact) (packer.Art return client.Artifact(), response.Keep, nil } -func (p *PostProcessorServer) Configure(args *PostProcessorConfigureArgs, reply *error) error { - *reply = p.p.Configure(args.Configs...) - if *reply != nil { - *reply = NewBasicError(*reply) - } - - return nil +func (p *PostProcessorServer) Configure(args *PostProcessorConfigureArgs, reply *interface{}) error { + err := p.p.Configure(args.Configs...) + return err } func (p *PostProcessorServer) PostProcess(streamId uint32, reply *PostProcessorProcessResponse) error { @@ -92,12 +88,8 @@ func (p *PostProcessorServer) PostProcess(streamId uint32, reply *PostProcessorP go server.Serve() } - if err != nil { - err = NewBasicError(err) - } - *reply = PostProcessorProcessResponse{ - Err: err, + Err: NewBasicError(err), Keep: keep, StreamId: streamId, }