Skip to content

Commit 67a0e83

Browse files
committed
fix: read stream object using nonce from filter state
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
1 parent 54002ae commit 67a0e83

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

up/stream_key_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,19 @@ func TestStreamKey_getFromCtx(t *testing.T) {
7575
require.Equal(t, "sess-abc", got)
7676
}
7777

78+
func TestStreamKey_getFromLaterWriterUsingFilterStateNonce(t *testing.T) {
79+
first, h := newTestWriter(t)
80+
defer func() { dropBag(first.f.streamObjectNonce) }()
81+
82+
k := NewStreamKey[string]("plum.target")
83+
k.Set(first, "selected-target")
84+
85+
second := NewWriter(h)
86+
got, ok := k.Get(second)
87+
require.True(t, ok, "later writer could not read stream object using nonce from filter state")
88+
require.Equal(t, "selected-target", got)
89+
}
90+
7891
// TestStreamKey_getFromCtxNoValue: GetFromCtx returns (zero, false) when no
7992
// bag exists (Writer never called SetStreamObject).
8093
func TestStreamKey_getFromCtxNoValue(t *testing.T) {

up/writer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,11 @@ func (w *Writer) SetStreamObject(key string, v any) {
377377
// no nonce is minted.
378378
func (w *Writer) GetStreamObject(key string) (any, bool) {
379379
if w.f.streamObjectNonce == "" {
380-
return nil, false
380+
nonce, ok := w.GetFilterState(streamObjectIDKey)
381+
if !ok || nonce == "" {
382+
return nil, false
383+
}
384+
w.f.streamObjectNonce = nonce
381385
}
382386
bag, ok := lookupBag(w.f.streamObjectNonce)
383387
if !ok {

0 commit comments

Comments
 (0)