retro-aim-server icon indicating copy to clipboard operation
retro-aim-server copied to clipboard

Formatting screenname with AIM 4.1 or lower causes it to sign off

Open jgknight opened this issue 1 year ago • 0 comments

Subject of the Issue

When formatting screenname with an AIM client running 4.1 or 3.5, it appears successful but the client is disconnected due to a FLAPFrameSignoff.

Deployment Environment

  • Retro AIM Server Version: dev, c9edc69f8088fbef09e5187e3d69161aecaff09f . Also tried release binary of 0.11.0.
  • Installation Method: cross-built from source on MacOS targeting Linux/x86_64
  • Client(s) Used: AIM 4.1.2010 on XP, AIM 3.5.1808
  • Other Relevant Details:

Steps to Reproduce

  1. Sign on with AIM 4.1.2010, or 3.5.1808
  2. Format the screenname
  3. Observe that it appears successful - you get the success dialog box, but buddies will see it sign off and the server logs/pcap show the client disconnecting.

In a few cases I wouldn't even get the format screenname dialog box.

Expected Behavior

I do not expect the client to disconnect. Formatting works on client versions 4.2 or newer.

Actual Behavior

Client disconnects

Troubleshooting Data

In the trace logs I can see the AdminInfoChangeRequest come in and the server replies with the AdminInfoChangeReply which appears to cause the sign off. Perhaps the client is expecting something else in the response? I did try a change where the response does not include wire.AdminTLVScreenNameFormatted TLV but that did not fix the issue, the client appears to hang in that case.

time=2024-10-07T22:05:57.975Z level=DEBUG msg="accepted connection" svc=ADMIN ip=192.168.40.11:3439
time=2024-10-07T22:05:57.978Z level=TRACE msg="client request -> server response" svc=ADMIN request.food_group=OService request.sub_group=ClientVersions request.snac_frame="{FoodGroup:1 SubGroup:23 Flags:0 RequestID:59}" request.snac_payload="{Versions:[7 1 1 3]}" response.food_group=OService response.sub_group=OServiceHostVersions response.snac_frame="{FoodGroup:1 SubGroup:24 Flags:0 RequestID:59}" response.snac_payload="{Versions:[7 1 1 3]}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:05:57.979Z level=TRACE msg="client request -> server response" svc=ADMIN request.food_group=OService request.sub_group=OServiceRateParamsQuery request.snac_frame="{FoodGroup:1 SubGroup:6 Flags:0 RequestID:0}" request.snac_payload=<nil> response.food_group=OService response.sub_group=OServiceRateParamsReply response.snac_frame="{FoodGroup:1 SubGroup:7 Flags:0 RequestID:0}" response.snac_payload="{RateClasses:[{ID:1 WindowSize:80 ClearLevel:2500 AlertLevel:2000 LimitLevel:1500 DisconnectLevel:800 CurrentLevel:3433 MaxLevel:6000 LastTime:0 CurrentState:0}] RateGroups:[{ID:1 Pairs:[{FoodGroup:1 SubGroup:1} {FoodGroup:1 SubGroup:2} {FoodGroup:1 SubGroup:3} {FoodGroup:1 SubGroup:4} {FoodGroup:1 SubGroup:5} {FoodGroup:1 SubGroup:6} {FoodGroup:1 SubGroup:7} {FoodGroup:1 SubGroup:8} {FoodGroup:1 SubGroup:9} {FoodGroup:1 SubGroup:10} {FoodGroup:1 SubGroup:11} {FoodGroup:1 SubGroup:12} {FoodGroup:1 SubGroup:13} {FoodGroup:1 SubGroup:14} {FoodGroup:1 SubGroup:15} {FoodGroup:1 SubGroup:16} {FoodGroup:1 SubGroup:17} {FoodGroup:1 SubGroup:18} {FoodGroup:1 SubGroup:19} {FoodGroup:1 SubGroup:20} {FoodGroup:1 SubGroup:21} {FoodGroup:1 SubGroup:22} {FoodGroup:1 SubGroup:23} {FoodGroup:1 SubGroup:24} {FoodGroup:1 SubGroup:25} {FoodGroup:1 SubGroup:26} {FoodGroup:1 SubGroup:27} {FoodGroup:1 SubGroup:28} {FoodGroup:1 SubGroup:29} {FoodGroup:1 SubGroup:30} {FoodGroup:1 SubGroup:31} {FoodGroup:1 SubGroup:32} {FoodGroup:1 SubGroup:33} {FoodGroup:1 SubGroup:34} {FoodGroup:1 SubGroup:35} {FoodGroup:2 SubGroup:1} {FoodGroup:2 SubGroup:2} {FoodGroup:2 SubGroup:3} {FoodGroup:2 SubGroup:4} {FoodGroup:2 SubGroup:5} {FoodGroup:2 SubGroup:6} {FoodGroup:2 SubGroup:7} {FoodGroup:2 SubGroup:8} {FoodGroup:2 SubGroup:9} {FoodGroup:2 SubGroup:10} {FoodGroup:2 SubGroup:11} {FoodGroup:2 SubGroup:12} {FoodGroup:2 SubGroup:13} {FoodGroup:2 SubGroup:14} {FoodGroup:2 SubGroup:15} {FoodGroup:2 SubGroup:16} {FoodGroup:2 SubGroup:17} {FoodGroup:2 SubGroup:18} {FoodGroup:2 SubGroup:19} {FoodGroup:2 SubGroup:20} {FoodGroup:2 SubGroup:21} {FoodGroup:3 SubGroup:1} {FoodGroup:3 SubGroup:2} {FoodGroup:3 SubGroup:3} {FoodGroup:3 SubGroup:4} {FoodGroup:3 SubGroup:5} {FoodGroup:3 SubGroup:6} {FoodGroup:3 SubGroup:7} {FoodGroup:3 SubGroup:8} {FoodGroup:3 SubGroup:9} {FoodGroup:3 SubGroup:10} {FoodGroup:3 SubGroup:11} {FoodGroup:3 SubGroup:12} {FoodGroup:3 SubGroup:15} {FoodGroup:3 SubGroup:16} {FoodGroup:4 SubGroup:1} {FoodGroup:4 SubGroup:2} {FoodGroup:4 SubGroup:3} {FoodGroup:4 SubGroup:4} {FoodGroup:4 SubGroup:5} {FoodGroup:4 SubGroup:6} {FoodGroup:4 SubGroup:7} {FoodGroup:4 SubGroup:8} {FoodGroup:4 SubGroup:9} {FoodGroup:4 SubGroup:10} {FoodGroup:4 SubGroup:11} {FoodGroup:4 SubGroup:12} {FoodGroup:4 SubGroup:13} {FoodGroup:4 SubGroup:14} {FoodGroup:4 SubGroup:15} {FoodGroup:4 SubGroup:16} {FoodGroup:4 SubGroup:17} {FoodGroup:4 SubGroup:18} {FoodGroup:4 SubGroup:19} {FoodGroup:4 SubGroup:20} {FoodGroup:4 SubGroup:23} {FoodGroup:13 SubGroup:1} {FoodGroup:13 SubGroup:2} {FoodGroup:13 SubGroup:3} {FoodGroup:13 SubGroup:4} {FoodGroup:13 SubGroup:5} {FoodGroup:13 SubGroup:6} {FoodGroup:13 SubGroup:7} {FoodGroup:13 SubGroup:8} {FoodGroup:13 SubGroup:9} {FoodGroup:14 SubGroup:1} {FoodGroup:14 SubGroup:2} {FoodGroup:14 SubGroup:3} {FoodGroup:14 SubGroup:4} {FoodGroup:14 SubGroup:5} {FoodGroup:14 SubGroup:6} {FoodGroup:14 SubGroup:7} {FoodGroup:14 SubGroup:8} {FoodGroup:14 SubGroup:9} {FoodGroup:14 SubGroup:10} {FoodGroup:14 SubGroup:11} {FoodGroup:14 SubGroup:12} {FoodGroup:14 SubGroup:13} {FoodGroup:14 SubGroup:14} {FoodGroup:14 SubGroup:15} {FoodGroup:14 SubGroup:16} {FoodGroup:14 SubGroup:17} {FoodGroup:14 SubGroup:18} {FoodGroup:14 SubGroup:19} {FoodGroup:14 SubGroup:20} {FoodGroup:14 SubGroup:21} {FoodGroup:14 SubGroup:22} {FoodGroup:14 SubGroup:23} {FoodGroup:14 SubGroup:24} {FoodGroup:14 SubGroup:25} {FoodGroup:14 SubGroup:26} {FoodGroup:14 SubGroup:27} {FoodGroup:14 SubGroup:28} {FoodGroup:14 SubGroup:29} {FoodGroup:14 SubGroup:30} {FoodGroup:14 SubGroup:31} {FoodGroup:14 SubGroup:32} {FoodGroup:14 SubGroup:33} {FoodGroup:14 SubGroup:34} {FoodGroup:14 SubGroup:35} {FoodGroup:14 SubGroup:36} {FoodGroup:14 SubGroup:37} {FoodGroup:14 SubGroup:38} {FoodGroup:14 SubGroup:39} {FoodGroup:14 SubGroup:40} {FoodGroup:14 SubGroup:41} {FoodGroup:14 SubGroup:48} {FoodGroup:16 SubGroup:1} {FoodGroup:16 SubGroup:2} {FoodGroup:16 SubGroup:3} {FoodGroup:16 SubGroup:4} {FoodGroup:16 SubGroup:5} {FoodGroup:16 SubGroup:6} {FoodGroup:16 SubGroup:7} {FoodGroup:19 SubGroup:1} {FoodGroup:19 SubGroup:2} {FoodGroup:19 SubGroup:3} {FoodGroup:19 SubGroup:4} {FoodGroup:19 SubGroup:5} {FoodGroup:19 SubGroup:6} {FoodGroup:19 SubGroup:7} {FoodGroup:19 SubGroup:8} {FoodGroup:19 SubGroup:9} {FoodGroup:19 SubGroup:10} {FoodGroup:19 SubGroup:11} {FoodGroup:19 SubGroup:12} {FoodGroup:19 SubGroup:13} {FoodGroup:19 SubGroup:14} {FoodGroup:19 SubGroup:15} {FoodGroup:19 SubGroup:16} {FoodGroup:19 SubGroup:17} {FoodGroup:19 SubGroup:18} {FoodGroup:19 SubGroup:19} {FoodGroup:19 SubGroup:20} {FoodGroup:19 SubGroup:21} {FoodGroup:19 SubGroup:22} {FoodGroup:19 SubGroup:23} {FoodGroup:19 SubGroup:24} {FoodGroup:19 SubGroup:25} {FoodGroup:19 SubGroup:26} {FoodGroup:19 SubGroup:27} {FoodGroup:19 SubGroup:28} {FoodGroup:19 SubGroup:29} {FoodGroup:19 SubGroup:30} {FoodGroup:19 SubGroup:31} {FoodGroup:19 SubGroup:33} {FoodGroup:19 SubGroup:34} {FoodGroup:19 SubGroup:35} {FoodGroup:19 SubGroup:36} {FoodGroup:19 SubGroup:37} {FoodGroup:23 SubGroup:1} {FoodGroup:23 SubGroup:2} {FoodGroup:23 SubGroup:3} {FoodGroup:23 SubGroup:4} {FoodGroup:23 SubGroup:6} {FoodGroup:23 SubGroup:7} {FoodGroup:23 SubGroup:8} {FoodGroup:23 SubGroup:10} {FoodGroup:23 SubGroup:12} {FoodGroup:24 SubGroup:1} {FoodGroup:24 SubGroup:2} {FoodGroup:24 SubGroup:3} {FoodGroup:24 SubGroup:4} {FoodGroup:24 SubGroup:5} {FoodGroup:24 SubGroup:6} {FoodGroup:24 SubGroup:7} {FoodGroup:24 SubGroup:8} {FoodGroup:24 SubGroup:9} {FoodGroup:24 SubGroup:10} {FoodGroup:24 SubGroup:11} {FoodGroup:24 SubGroup:13} {FoodGroup:24 SubGroup:14} {FoodGroup:24 SubGroup:15} {FoodGroup:24 SubGroup:16} {FoodGroup:24 SubGroup:17} {FoodGroup:24 SubGroup:18} {FoodGroup:24 SubGroup:19} {FoodGroup:24 SubGroup:20} {FoodGroup:24 SubGroup:21} {FoodGroup:24 SubGroup:22} {FoodGroup:24 SubGroup:23} {FoodGroup:21 SubGroup:1} {FoodGroup:21 SubGroup:2} {FoodGroup:21 SubGroup:3} {FoodGroup:9 SubGroup:1} {FoodGroup:9 SubGroup:2} {FoodGroup:9 SubGroup:3} {FoodGroup:9 SubGroup:4} {FoodGroup:9 SubGroup:5} {FoodGroup:9 SubGroup:6} {FoodGroup:9 SubGroup:7} {FoodGroup:9 SubGroup:8} {FoodGroup:9 SubGroup:9} {FoodGroup:9 SubGroup:10} {FoodGroup:9 SubGroup:11} {FoodGroup:15 SubGroup:1} {FoodGroup:15 SubGroup:2} {FoodGroup:15 SubGroup:3} {FoodGroup:15 SubGroup:4} {FoodGroup:15 SubGroup:5}]}]}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:05:57.981Z level=TRACE msg="client request" svc=ADMIN request.food_group=OService request.sub_group=OServiceRateParamsSubAdd request.snac_frame="{FoodGroup:1 SubGroup:8 Flags:0 RequestID:0}" request.snac_payload={TLVRestBlock:{TLVList:[]}} screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:05:58.029Z level=INFO msg="user signed on" svc=ADMIN screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:05:58.030Z level=TRACE msg="client request" svc=ADMIN request.food_group=OService request.sub_group=OServiceClientOnline request.snac_frame="{FoodGroup:1 SubGroup:2 Flags:0 RequestID:60}" request.snac_payload="{GroupVersions:[{FoodGroup:7 Version:1 ToolID:4 ToolVersion:1} {FoodGroup:1 Version:3 ToolID:4 ToolVersion:2010}]}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:05:58.030Z level=DEBUG msg="client is online" svc=ADMIN group_versions="[{FoodGroup:7 Version:1 ToolID:4 ToolVersion:1} {FoodGroup:1 Version:3 ToolID:4 ToolVersion:2010}]" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:06:01.249Z level=TRACE msg="client request" svc=BOS request.food_group=Buddy request.sub_group=BuddyArrived request.snac_frame="{FoodGroup:3 SubGroup:11 Flags:0 RequestID:0}" request.snac_payload="{TLVUserInfo:{ScreenName:test41 WarningLevel:0 TLVBlock:{TLVList:[{Tag:3 Value:[103 4 91 64]} {Tag:1 Value:[0 17]} {Tag:6 Value:[0 0 0 0]} {Tag:13 Value:[9 70 19 70 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 69 76 127 17 209 130 34 68 69 83 84 0 0 116 143 36 32 98 135 17 209 130 34 68 69 83 84 0 0 9 70 19 72 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 67 76 127 17 209 130 34 68 69 83 84 0 0]}]}}}" screenName=test41 ip=192.168.40.11:3436
time=2024-10-07T22:06:01.250Z level=TRACE msg="client request" svc=BOS request.food_group=Buddy request.sub_group=BuddyArrived request.snac_frame="{FoodGroup:3 SubGroup:11 Flags:0 RequestID:0}" request.snac_payload="{TLVUserInfo:{ScreenName:test41 WarningLevel:0 TLVBlock:{TLVList:[{Tag:3 Value:[103 4 91 64]} {Tag:1 Value:[0 17]} {Tag:6 Value:[0 0 0 0]} {Tag:13 Value:[9 70 19 70 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 69 76 127 17 209 130 34 68 69 83 84 0 0 116 143 36 32 98 135 17 209 130 34 68 69 83 84 0 0 9 70 19 72 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 67 76 127 17 209 130 34 68 69 83 84 0 0]}]}}}" screenName=test41 ip=192.168.40.11:3436
time=2024-10-07T22:06:01.250Z level=TRACE msg="client request" svc=BOS request.food_group=OService request.sub_group=OServiceUserInfoUpdate request.snac_frame="{FoodGroup:1 SubGroup:15 Flags:0 RequestID:0}" request.snac_payload="{TLVUserInfo:{ScreenName:test41 WarningLevel:0 TLVBlock:{TLVList:[{Tag:3 Value:[103 4 91 64]} {Tag:1 Value:[0 17]} {Tag:6 Value:[0 0 0 0]} {Tag:13 Value:[9 70 19 70 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 69 76 127 17 209 130 34 68 69 83 84 0 0 116 143 36 32 98 135 17 209 130 34 68 69 83 84 0 0 9 70 19 72 76 127 17 209 130 34 68 69 83 84 0 0 9 70 19 67 76 127 17 209 130 34 68 69 83 84 0 0]}]}}}" screenName=test41 ip=192.168.40.11:3436
time=2024-10-07T22:06:01.250Z level=TRACE msg="client request -> server response" svc=ADMIN request.food_group=Admin request.sub_group=AdminInfoChangeRequest request.snac_frame="{FoodGroup:7 SubGroup:4 Flags:0 RequestID:459777}" request.snac_payload=<nil> response.food_group=Admin response.sub_group=AdminInfoChangeReply response.snac_frame="{FoodGroup:7 SubGroup:5 Flags:0 RequestID:459777}" response.snac_payload="{Permissions:3 TLVBlock:{TLVList:[{Tag:1 Value:[116 101 115 116 52 49]}]}}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:06:01.260Z level=INFO msg="got FLAPFrameSignoff" svc=ADMIN flap="{StartMarker:42 FrameType:4 Sequence:32562 Payload:[]}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:06:01.260Z level=INFO msg="user disconnected" svc=ADMIN screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:06:01.261Z level=WARN msg="can't send notification because the user's session is closed" recipient=test41 message="{Frame:{FoodGroup:3 SubGroup:12 Flags:0 RequestID:0} Body:{TLVUserInfo:{ScreenName:test41 WarningLevel:0 TLVBlock:{TLVList:[{Tag:1 Value:[0 0]}]}}}}" screenName=test41 ip=192.168.40.11:3439
time=2024-10-07T22:06:01.261Z level=INFO msg="user disconnected" svc=BOS screenName=test41 ip=192.168.40.11:3436

jgknight avatar Oct 07 '24 22:10 jgknight