Skip to content

Commit 6bcfc10

Browse files
committed
Fix two regressions introduced by 0.15.0.
See: brocaar/chirpstack-application-server#37.
1 parent 7dc7214 commit 6bcfc10

File tree

5 files changed

+26
-14
lines changed

5 files changed

+26
-14
lines changed

docs/changelog.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## 0.15.1
4+
5+
**Bugfixes:**
6+
7+
* Fix error handling for creating a node-session that already exists
8+
* Fix delete node-session regression introduced in 0.15.0
9+
310
## 0.15.0
411

512
**Features:**

internal/api/network_server.go

+2-7
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (n *NetworkServerAPI) CreateNodeSession(ctx context.Context, req *ns.Create
6464
return nil, grpc.Errorf(codes.Internal, err.Error())
6565
}
6666
if exists {
67-
return nil, grpc.Errorf(codes.AlreadyExists, err.Error())
67+
return nil, grpc.Errorf(codes.AlreadyExists, "node-session already exists")
6868
}
6969

7070
if err := session.SaveNodeSession(n.ctx.RedisPool, sess); err != nil {
@@ -181,12 +181,7 @@ func (n *NetworkServerAPI) DeleteNodeSession(ctx context.Context, req *ns.Delete
181181
var devEUI lorawan.EUI64
182182
copy(devEUI[:], req.DevEUI)
183183

184-
sess, err := session.GetNodeSession(n.ctx.RedisPool, devEUI)
185-
if err != nil {
186-
return nil, grpc.Errorf(codes.Unknown, err.Error())
187-
}
188-
189-
if err := session.DeleteNodeSession(n.ctx.RedisPool, sess.DevAddr); err != nil {
184+
if err := session.DeleteNodeSession(n.ctx.RedisPool, devEUI); err != nil {
190185
return nil, grpc.Errorf(codes.Unknown, err.Error())
191186
}
192187

internal/session/session.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -210,18 +210,18 @@ func GetNodeSession(p *redis.Pool, devEUI lorawan.EUI64) (NodeSession, error) {
210210
return ns, nil
211211
}
212212

213-
// DeleteNodeSession deletes the NodeSession matching the given DevAddr.
214-
func DeleteNodeSession(p *redis.Pool, devAddr lorawan.DevAddr) error {
213+
// DeleteNodeSession deletes the NodeSession matching the given DevEUI.
214+
func DeleteNodeSession(p *redis.Pool, devEUI lorawan.EUI64) error {
215215
c := p.Get()
216216
defer c.Close()
217217

218-
val, err := redis.Int(c.Do("DEL", fmt.Sprintf(nodeSessionKeyTempl, devAddr)))
218+
val, err := redis.Int(c.Do("DEL", fmt.Sprintf(nodeSessionKeyTempl, devEUI)))
219219
if err != nil {
220-
return fmt.Errorf("delete node-session %s error: %s", devAddr, err)
220+
return fmt.Errorf("delete node-session %s error: %s", devEUI, err)
221221
}
222222
if val == 0 {
223-
return fmt.Errorf("node-session %s does not exist", devAddr)
223+
return fmt.Errorf("node-session %s does not exist", devEUI)
224224
}
225-
log.WithField("dev_addr", devAddr).Info("node-session deleted")
225+
log.WithField("dev_eui", devEUI).Info("node-session deleted")
226226
return nil
227227
}

internal/session/session_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,16 @@ func TestNodeSession(t *testing.T) {
139139
So(exists, ShouldBeTrue)
140140
})
141141
})
142+
143+
Convey("When deleting a NodeSession", func() {
144+
So(DeleteNodeSession(p, ns.DevEUI), ShouldBeNil)
145+
146+
Convey("Then the node-session has been removed", func() {
147+
exists, err := NodeSessionExists(p, ns.DevEUI)
148+
So(err, ShouldBeNil)
149+
So(exists, ShouldBeFalse)
150+
})
151+
})
142152
})
143153

144154
Convey("When calling validateAndGetFullFCntUp", func() {

mkdocs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pages:
1414
- changelog.md
1515

1616
extra:
17-
version: '0.15.0'
17+
version: '0.15.1'
1818
github:
1919
download_release: true
2020

0 commit comments

Comments
 (0)