Adapt to changed cacert-gosigner interface package
- update cacert-gosigner dependency - add context parameter to fullfil interface contracts
This commit is contained in:
parent
23174c9c7d
commit
d438238118
4 changed files with 43 additions and 22 deletions
2
go.mod
2
go.mod
|
@ -3,7 +3,7 @@ module git.cacert.org/cacert-gosignerclient
|
|||
go 1.19
|
||||
|
||||
require (
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201103407-51afebf2c12f
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201203610-19436c06c2cf
|
||||
github.com/balacode/go-delta v0.1.0
|
||||
github.com/shamaton/msgpackgen v0.3.0
|
||||
github.com/sirupsen/logrus v1.9.0
|
||||
|
|
6
go.sum
6
go.sum
|
@ -1,7 +1,5 @@
|
|||
git.cacert.org/cacert-gosigner v0.0.0-20221130191226-de7e716a8274 h1:lGaIVUyXCtmDZ3ZhCYE44rpbvDF/JMDA/zrPgCZKMvc=
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221130191226-de7e716a8274/go.mod h1:mb8oBdxQ26GI3xT4b8B7hXYWGED9vvjPGxehmbicyc4=
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201103407-51afebf2c12f h1:OLe/r/dK4WtQXjLCP3Naq/MUkkVkClvw2JIzLxNR2sI=
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201103407-51afebf2c12f/go.mod h1:mb8oBdxQ26GI3xT4b8B7hXYWGED9vvjPGxehmbicyc4=
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201203610-19436c06c2cf h1:dV0Y485b/HvtrEVC9Yflla8pVAnMoRvfKZI4pozOftY=
|
||||
git.cacert.org/cacert-gosigner v0.0.0-20221201203610-19436c06c2cf/go.mod h1:mb8oBdxQ26GI3xT4b8B7hXYWGED9vvjPGxehmbicyc4=
|
||||
github.com/balacode/go-delta v0.1.0 h1:pwz4CMn06P2bIaIfAx3GSabMPwJp/Ww4if+7SgPYa3I=
|
||||
github.com/balacode/go-delta v0.1.0/go.mod h1:wLNrwTI3lHbPBvnLzqbHmA7HVVlm1u22XLvhbeA6t3o=
|
||||
github.com/balacode/zr v1.0.0 h1:MCupkEoXvrnCljc4KddiDOhR04ZLUAACgtKuo3o+9vc=
|
||||
|
|
|
@ -80,17 +80,17 @@ func (c *Client) Run(ctx context.Context) error {
|
|||
framerErrors := make(chan error)
|
||||
|
||||
go func(f protocol.Framer) {
|
||||
framerErrors <- f.ReadFrames(c.port, c.in)
|
||||
framerErrors <- f.ReadFrames(ctx, c.port, c.in)
|
||||
}(c.framer)
|
||||
|
||||
go func(f protocol.Framer) {
|
||||
framerErrors <- f.WriteFrames(c.port, c.out)
|
||||
framerErrors <- f.WriteFrames(ctx, c.port, c.out)
|
||||
}(c.framer)
|
||||
|
||||
go func() {
|
||||
clientProtocol := protocol.NewClient(c.handler, c.commands, c.in, c.out, c.logger)
|
||||
|
||||
protocolErrors <- clientProtocol.Handle()
|
||||
protocolErrors <- clientProtocol.Handle(ctx)
|
||||
}()
|
||||
|
||||
ctx, cancelCommandLoop := context.WithCancel(ctx)
|
||||
|
|
|
@ -18,6 +18,7 @@ limitations under the License.
|
|||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
|
@ -39,7 +40,7 @@ type SignerClientHandler struct {
|
|||
clientCallback chan interface{}
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) Send(command *protocol.Command, out chan []byte) error {
|
||||
func (s *SignerClientHandler) Send(ctx context.Context, command *protocol.Command, out chan []byte) error {
|
||||
var (
|
||||
frame []byte
|
||||
err error
|
||||
|
@ -54,7 +55,12 @@ func (s *SignerClientHandler) Send(command *protocol.Command, out chan []byte) e
|
|||
|
||||
s.logger.Trace("writing command announcement")
|
||||
|
||||
out <- frame
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil
|
||||
case out <- frame:
|
||||
break
|
||||
}
|
||||
|
||||
frame, err = msgpack.Marshal(command.Command)
|
||||
if err != nil {
|
||||
|
@ -63,17 +69,22 @@ func (s *SignerClientHandler) Send(command *protocol.Command, out chan []byte) e
|
|||
|
||||
s.logger.WithField("command", command.Command).Debug("write command data")
|
||||
|
||||
out <- frame
|
||||
|
||||
return nil
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil
|
||||
case out <- frame:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) ResponseAnnounce(in chan []byte) (*protocol.Response, error) {
|
||||
func (s *SignerClientHandler) ResponseAnnounce(ctx context.Context, in chan []byte) (*protocol.Response, error) {
|
||||
response := &protocol.Response{}
|
||||
|
||||
var announce messages.ResponseAnnounce
|
||||
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil, nil
|
||||
case frame := <-in:
|
||||
if err := msgpack.Unmarshal(frame, &announce); err != nil {
|
||||
return nil, fmt.Errorf("could not unmarshal response announcement: %w", err)
|
||||
|
@ -89,8 +100,10 @@ func (s *SignerClientHandler) ResponseAnnounce(in chan []byte) (*protocol.Respon
|
|||
}
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) ResponseData(in chan []byte, response *protocol.Response) error {
|
||||
func (s *SignerClientHandler) ResponseData(ctx context.Context, in chan []byte, response *protocol.Response) error {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil
|
||||
case frame := <-in:
|
||||
switch response.Announce.Code {
|
||||
case messages.RespHealth:
|
||||
|
@ -124,7 +137,7 @@ func (s *SignerClientHandler) ResponseData(in chan []byte, response *protocol.Re
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) HandleResponse(response *protocol.Response) error {
|
||||
func (s *SignerClientHandler) HandleResponse(ctx context.Context, response *protocol.Response) error {
|
||||
s.logger.WithField("response", response.Announce).Info("handled response")
|
||||
s.logger.WithField("response", response).Debug("full response")
|
||||
|
||||
|
@ -132,9 +145,9 @@ func (s *SignerClientHandler) HandleResponse(response *protocol.Response) error
|
|||
case *messages.ErrorResponse:
|
||||
s.logger.WithField("message", r.Message).Error("error from signer")
|
||||
case *messages.HealthResponse:
|
||||
s.handleHealthResponse(r)
|
||||
s.handleHealthResponse(ctx, r)
|
||||
case *messages.FetchCRLResponse:
|
||||
s.handleFetchCRLResponse(r)
|
||||
s.handleFetchCRLResponse(ctx, r)
|
||||
default:
|
||||
s.logger.WithField("response", response).Warnf("unhandled response of type %T", response.Response)
|
||||
}
|
||||
|
@ -142,7 +155,7 @@ func (s *SignerClientHandler) HandleResponse(response *protocol.Response) error
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) handleHealthResponse(r *messages.HealthResponse) {
|
||||
func (s *SignerClientHandler) handleHealthResponse(ctx context.Context, r *messages.HealthResponse) {
|
||||
signerInfo := client.SignerInfo{}
|
||||
|
||||
signerInfo.SignerHealth = r.Healthy
|
||||
|
@ -198,11 +211,21 @@ func (s *SignerClientHandler) handleHealthResponse(r *messages.HealthResponse) {
|
|||
}
|
||||
}
|
||||
|
||||
s.clientCallback <- signerInfo
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case s.clientCallback <- signerInfo:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SignerClientHandler) handleFetchCRLResponse(r *messages.FetchCRLResponse) {
|
||||
s.clientCallback <- r
|
||||
func (s *SignerClientHandler) handleFetchCRLResponse(ctx context.Context, r *messages.FetchCRLResponse) {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case s.clientCallback <- r:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
func New(
|
||||
|
|
Loading…
Reference in a new issue