Skip to content

Commit e91ecce

Browse files
committed
lightspeed: coerce numeric values into bool fields
1 parent 57e3ece commit e91ecce

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

pkg/connector/handlemeta.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,12 @@ func (m *MetaClient) handleMetaEvent(ctx context.Context, rawEvt any) {
173173
if !evt.IsTyping {
174174
timeout = 0
175175
}
176-
portalKey := m.makeFBPortalKey(threadKey, table.UNKNOWN_THREAD_TYPE)
177176
m.UserLogin.QueueRemoteEvent(&simplevent.Typing{
178177
EventMeta: simplevent.EventMeta{
179178
Type: bridgev2.RemoteEventTyping,
180-
PortalKey: portalKey,
181-
// We don't know the thread type here, which affects whether the portal key receiver should be set.
182-
// Mark it as uncertain so the bridge can fall back to a receiver-less portal key if needed.
183-
UncertainReceiver: !m.Main.Bridge.Config.SplitPortals,
184-
Sender: m.makeEventSender(userID),
185-
Timestamp: evt.Timestamp,
179+
PortalKey: m.makeFBPortalKey(threadKey, table.UNKNOWN_THREAD_TYPE),
180+
Sender: m.makeEventSender(userID),
181+
Timestamp: evt.Timestamp,
186182
},
187183
Timeout: timeout,
188184
Type: bridgev2.TypingTypeText,

pkg/messagix/lightspeed/decode.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,12 +296,17 @@ func (ls *LightSpeedDecoder) handleStoredProcedure(referenceName string, data []
296296
}
297297
newDepInstance.Field(i).Set(reflect.ValueOf(val))
298298
case reflect.Bool:
299-
boolean, ok := val.(bool)
300-
if !ok {
299+
switch v := val.(type) {
300+
case bool:
301+
newDepInstance.Field(i).SetBool(v)
302+
case int64:
303+
newDepInstance.Field(i).SetBool(v != 0)
304+
case float64:
305+
newDepInstance.Field(i).SetBool(v != 0)
306+
default:
301307
badGlobalLog.Warn().Any("val", redactForLog(val)).Type("val_type", val).Int("field_index", index).Str("field_name", fieldInfo.Name).Str("struct_name", depFieldsType.Name()).Msg("Failed to set bool")
302308
continue
303309
}
304-
newDepInstance.Field(i).SetBool(boolean)
305310
case reflect.Int:
306311
integer, ok := val.(int)
307312
if !ok {

0 commit comments

Comments
 (0)