Просмотр исходного кода

ensure TOC can receive OOS System Msg

Mike 4 месяцев назад
Родитель
Сommit
4033cd5075
2 измененных файлов с 4 добавлено и 8 удалено
  1. 3 7
      server/toc/cmd_server.go
  2. 1 1
      server/toc/cmd_server_test.go

+ 3 - 7
server/toc/cmd_server.go

@@ -233,15 +233,11 @@ func (s OSCARProxy) convertICBMInstantMsg(ctx context.Context, me *state.Session
 	}
 
 	if me.SupportsTOC2MsgEnc() {
-		uFlags, hasVal := snac.TLVUserInfo.TLVList.Uint16BE(wire.OServiceUserInfoUserFlags)
-		if !hasVal {
-			s.Logger.DebugContext(ctx, "missing wire.OServiceUserInfoUserFlags in ICBM message")
-			return ""
-		}
-		ucArray := userClassString(uFlags, snac.IsAway())
+		uFlags, _ := snac.TLVUserInfo.TLVList.Uint16BE(wire.OServiceUserInfoUserFlags)
+		classStr := userClassString(uFlags, snac.IsAway())
 		// from a packet dump found in this russian zine: https://xn--lcss68aj21b.xn--w8je.xn--tckwe/books/xakep/spec65.pdf
 		// interesting that "L" is a value, not sure what it's for.
-		return fmt.Sprintf("IM_IN_ENC2:%s:%s:F:T:%s:F:L:en:%s", snac.ScreenName, autoResp, ucArray, txt)
+		return fmt.Sprintf("IM_IN_ENC2:%s:%s:F:T:%s:F:L:en:%s", snac.ScreenName, autoResp, classStr, txt)
 	}
 
 	if me.IsTOC2() {

+ 1 - 1
server/toc/cmd_server_test.go

@@ -431,7 +431,7 @@ func TestOSCARProxy_RecvBOS_IMIn(t *testing.T) {
 					},
 				},
 			},
-			wantCmd: []string{""},
+			wantCmd: []string{"IM_IN_ENC2:them:F:F:T:   :F:L:en:hello world!"},
 		},
 		{
 			name: "send chat invitation",