Skip to content

Commit e9fc2e1

Browse files
Fix crash that could be caused by Connection Status Listener. (#36)
fix: Fix crash that could be caused by Connection Status Listener. Fix crash that could be caused by Connection Status Listener, because it was not executed on Game Thread.
1 parent 2ee1691 commit e9fc2e1

File tree

14 files changed

+29
-11
lines changed

14 files changed

+29
-11
lines changed

.pubnub.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
name: unreal-engine-chat
2-
version: v0.4.3
2+
version: v0.4.4
33
schema: 1
44
scm: github.com/pubnub/unreal-engine-chat
55
changelog:
6+
- date: 2025-08-21
7+
version: v0.4.4
8+
changes:
9+
- type: bug
10+
text: "Fix crash that could be caused by Connection Status Listener, because it was not executed on Game Thread."
611
- date: 2025-07-08
712
version: v0.4.3
813
changes:

PubnubChat.uplugin

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"FileVersion": 3,
3-
"Version": 19,
4-
"VersionName": "0.4.3",
3+
"Version": 20,
4+
"VersionName": "0.4.4",
55
"FriendlyName": "Pubnub Chat SDK",
66
"Description": "Quickly and easily integrate a real-time text chat solution that is reliable, flexible, and scalable.",
77
"Category": "Code",

Source/PubnubChatSDK/Private/FunctionLibraries/PubnubLogUtilities.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2024 PubNub Inc. All Rights Reserved.
1+
// Copyright 2025 PubNub Inc. All Rights Reserved.
22

33

44
#include "FunctionLibraries/PubnubLogUtilities.h"

Source/PubnubChatSDK/Private/PubnubChat.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,21 @@ void UPubnubChat::InitConnectionListener()
3030

3131
auto ConnectionStatusListener = [this](Pubnub::pn_connection_status status, Pubnub::ConnectionStatusData status_data)
3232
{
33-
FPubnubConnectionStatusData StatusData = FPubnubConnectionStatusData({UPubnubChatUtilities::PubnubStringToFString(status_data.reason)});
34-
OnConnectionStatusChanged.Broadcast((EPubnubConnectionStatus)status, StatusData);
35-
OnConnectionStatusChangedNative.Broadcast((EPubnubConnectionStatus)status, StatusData);
33+
const EPubnubConnectionStatus Status = (EPubnubConnectionStatus)status;
34+
const FPubnubConnectionStatusData StatusData = FPubnubConnectionStatusData({UPubnubChatUtilities::PubnubStringToFString(status_data.reason)});
35+
36+
TWeakObjectPtr<UPubnubChat> WeakThis(this);
37+
AsyncTask(ENamedThreads::GameThread, [WeakThis, Status, StatusData]()
38+
{
39+
if(!WeakThis.IsValid())
40+
{
41+
return;
42+
}
43+
44+
UPubnubChat* StrongThis = WeakThis.Get();
45+
StrongThis->OnConnectionStatusChanged.Broadcast(Status, StatusData);
46+
StrongThis->OnConnectionStatusChangedNative.Broadcast(Status, StatusData);
47+
});
3648
};
3749
InternalChat->add_connection_status_listener(ConnectionStatusListener);
3850
}

Source/PubnubChatSDK/Public/FunctionLibraries/PubnubLogUtilities.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2024 PubNub Inc. All Rights Reserved.
1+
// Copyright 2025 PubNub Inc. All Rights Reserved.
22

33
#pragma once
44

@@ -28,6 +28,7 @@ class PUBNUBCHATSDK_API UPubnubLogUtilities : public UBlueprintFunctionLibrary
2828
//Use to print PubnubChatLog that function array input was empty. As FunctionName can accept __FUNCTION__ and will trim the class name
2929
static void PrintEmptyArrayFieldLog(FString FunctionName, FString FieldName);
3030

31+
//Use to print PubnubChatLog with error, usually from cpp exception
3132
static void PrintFunctionError(FString FunctionName, FString Error);
3233

3334
};

Source/PubnubChatSDK/Public/PubnubChat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class PUBNUBCHATSDK_API UPubnubChat : public UObject
213213
{
214214
if(InternalChat)
215215
{
216-
delete InternalChat;
216+
DestroyChat();
217217
}
218218
}
219219

Source/PubnubChatSDK/Public/PubnubMacroUtilities.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2024 PubNub Inc. All Rights Reserved.
1+
// Copyright 2025 PubNub Inc. All Rights Reserved.
22

33
#pragma once
44

Source/ThirdParty/sdk/include/pubnub_chat/chat.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ namespace Pubnub {
5353
int typing_timeout_difference = 1000;
5454
int store_user_activity_interval = 600000;
5555
bool store_user_activity_timestamps = false;
56-
float rate_limit_factor = 1.2;
56+
float rate_limit_factor = 1.2f;
5757
ChannelRateLimits rate_limit_per_channel;
5858
};
5959

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)