Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propagate max message size #109

Merged
merged 2 commits into from
Aug 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/go-ocf/cloud v0.0.0-20200722070446-3773fbf08dcb
github.com/go-ocf/go-coap/v2 v2.0.4-0.20200729140542-f80fe6477c94
github.com/go-ocf/kit v0.0.0-20200728130040-4aebdb6982bc
github.com/go-ocf/kit v0.0.0-20200803084548-48b1b68a4ffa
github.com/gofrs/uuid v3.3.0+incompatible
github.com/google/uuid v1.1.1
github.com/patrickmn/go-cache v2.1.0+incompatible
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ github.com/go-ocf/kit v0.0.0-20200702075537-01631a881369 h1:jxNPzNd20ibh2T2fRIem
github.com/go-ocf/kit v0.0.0-20200702075537-01631a881369/go.mod h1:VQ/L9+wU9EEddE6X0VIWtodORpT8WCapogWoR3jWhbM=
github.com/go-ocf/kit v0.0.0-20200728130040-4aebdb6982bc h1:VfEKBNg9m0rHO88jv/fOCXW1MN+Z4imfGZhYF0G8484=
github.com/go-ocf/kit v0.0.0-20200728130040-4aebdb6982bc/go.mod h1:TIsoMT/iB7t9P6ahkcOnsmvS83SIJsv9qXRfz/yLf6M=
github.com/go-ocf/kit v0.0.0-20200803084548-48b1b68a4ffa h1:ZYJD/J+WE6mNrb7bnoxtLzhD9hSsvsKWzVgmnNi8oVY=
github.com/go-ocf/kit v0.0.0-20200803084548-48b1b68a4ffa/go.mod h1:TIsoMT/iB7t9P6ahkcOnsmvS83SIJsv9qXRfz/yLf6M=
github.com/go-ocf/resource-aggregate v0.0.0-20190610073816-ff5194c51d2a/go.mod h1:5G1FgzxCnQhETxlFMh2DYtGJrl82AK3MvHXW4MYpO08=
github.com/go-ocf/resource-aggregate v0.0.0-20191001194720-f5aade86d89a/go.mod h1:5G1FgzxCnQhETxlFMh2DYtGJrl82AK3MvHXW4MYpO08=
github.com/go-ocf/resource-aggregate v0.0.0-20191029083107-ed77cacca426/go.mod h1:8KjjOJsevWFUzQ5UhD/tybREQhW05HeQsuGJ449X5qM=
Expand Down
6 changes: 6 additions & 0 deletions local/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type Config struct {
DisableDTLS bool
DisablePeerTCPSignalMessageCSMs bool
DisableUDPEndpoints bool
MaxMessageSize int

// specify one of:
DeviceOwnershipSDK *DeviceOwnershipSDKConfig `yaml:",omitempty"`
Expand Down Expand Up @@ -66,6 +67,11 @@ func NewClientFromConfig(cfg *Config, app ApplicationCallback, errors func(error
coap.WithDialDisablePeerTCPSignalMessageCSMs(),
))
}
if cfg.MaxMessageSize > 0 {
opts = append(opts, core.WithDialOptions(
coap.WithMaxMessageSize(cfg.MaxMessageSize),
))
}

deviceOwner, err := NewDeviceOwnerFromConfig(cfg, app, errors)
if err != nil {
Expand Down
8 changes: 8 additions & 0 deletions local/core/device.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ func DialTCPSecure(ctx context.Context, addr string, tlsConfig *TLSConfig, verif
}
tlsCfg := tls.Config{
InsecureSkipVerify: true,
ClientCAs: rootCAs,
Certificates: []tls.Certificate{cert},
VerifyPeerCertificate: kitNetCoap.NewVerifyPeerCertificate(rootCAs, verifyPeerCertificate),
}
Expand All @@ -128,6 +129,7 @@ func DialUDPSecure(ctx context.Context, addr string, tlsConfig *TLSConfig, verif

tlsCfg := dtls.Config{
InsecureSkipVerify: true,
ClientCAs: rootCAs,
CipherSuites: []dtls.CipherSuiteID{dtls.TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, dtls.TLS_ECDHE_ECDSA_WITH_AES_128_CCM},
Certificates: []tls.Certificate{cert},
VerifyPeerCertificate: kitNetCoap.NewVerifyPeerCertificate(rootCAs, verifyPeerCertificate),
Expand All @@ -139,6 +141,12 @@ func (d *Device) getConn(addr string) (c *coap.ClientCloseHandler, ok bool) {
d.lock.Lock()
defer d.lock.Unlock()
c, ok = d.conn[addr]
if ok {
if c.Context().Err() == nil {
return c, ok
}
delete(d.conn, addr)
}
return
}

Expand Down
23 changes: 12 additions & 11 deletions local/core/ownDevice.go
Original file line number Diff line number Diff line change
Expand Up @@ -293,20 +293,23 @@ func (d *Device) Own(

var tlsClient *kitNetCoap.ClientCloseHandler
var errors []error
var tlsAddr kitNet.Addr
for _, link := range links {
if tlsAddr, err := link.GetUDPSecureAddr(); err == nil {
tlsClient, err = otmClient.Dial(ctx, tlsAddr, d.cfg.dialOptions...)
if addr, err := link.GetUDPSecureAddr(); err == nil {
tlsClient, err = otmClient.Dial(ctx, addr, d.cfg.dialOptions...)
if err == nil {
tlsAddr = addr
break
}
errors = append(errors, fmt.Errorf("cannot connect to %v: %w", tlsAddr.URL(), err))
errors = append(errors, fmt.Errorf("cannot connect to %v: %w", addr.URL(), err))
}
if tlsAddr, err := link.GetTCPSecureAddr(); err == nil {
tlsClient, err = otmClient.Dial(ctx, tlsAddr, d.cfg.dialOptions...)
if addr, err := link.GetTCPSecureAddr(); err == nil {
tlsClient, err = otmClient.Dial(ctx, addr, d.cfg.dialOptions...)
if err == nil {
tlsAddr = addr
break
}
errors = append(errors, fmt.Errorf("cannot connect to %v: %w", tlsAddr.URL(), err))
errors = append(errors, fmt.Errorf("cannot connect to %v: %w", addr.URL(), err))
}
}
if tlsClient == nil {
Expand Down Expand Up @@ -404,11 +407,9 @@ func (d *Device) Own(

tlsClient.Close()

dlink, err := GetResourceLink(links, "/oic/d")
if err != nil {
return fmt.Errorf(errMsg, fmt.Errorf("cannot get device link: %w", err))
}
links, err = d.GetResourceLinks(ctx, dlink.Endpoints)
links, err = d.GetResourceLinks(ctx, []schema.Endpoint{
{URI: tlsAddr.URL()},
})
if err != nil {
return fmt.Errorf(errMsg, fmt.Errorf("cannot get resource links: %w", err))
}
Expand Down