@@ -82,10 +82,12 @@ private async Task HelperFunction_AcceptFriendRequest(Int64 source_user_id, Int6
8282 UserSession ? sourceData = WebSocketManager . GetDataFromUser ( source_user_id ) ;
8383 UserSession ? targetData = WebSocketManager . GetDataFromUser ( target_user_id ) ;
8484
85+ if ( sourceData == null )
86+ {
87+ return ;
88+ }
8589 // remove the request from requestor (online version)
86- #pragma warning disable CS8602 // Dereference of a possibly null reference.
8790 sourceData . GetSocialContainer ( ) . PendingRequests . Remove ( target_user_id ) ;
88- #pragma warning restore CS8602 // Dereference of a possibly null reference.
8991
9092 // remove the request from requestor (db)
9193 await Database . Functions . Auth . RemovePendingFriendRequest ( GlobalDatabaseInstance . g_Database , source_user_id , target_user_id ) ;
@@ -111,7 +113,7 @@ private async Task HelperFunction_AcceptFriendRequest(Int64 source_user_id, Int6
111113 }
112114
113115 // notify the source player that the target player is online, if they are
114- if ( sourceData != null )
116+ if ( targetData != null )
115117 {
116118 WebSocketMessage_Social_FriendStatusChanged friendStatusChangedEvent = new ( ) ;
117119 friendStatusChangedEvent . msg_id = ( int ) EWebSocketMessageID . SOCIAL_FRIEND_ONLINE_STATUS_CHANGED ;
@@ -147,7 +149,7 @@ public async Task AcceptPendingRequest(Int64 target_user_id)
147149 return ;
148150 }
149151
150- HelperFunction_AcceptFriendRequest ( source_user_id , target_user_id ) ;
152+ await HelperFunction_AcceptFriendRequest ( source_user_id , target_user_id ) ;
151153
152154 UserSession ? sourceSession = WebSocketManager . GetDataFromUser ( source_user_id ) ;
153155 if ( sourceSession != null )
@@ -176,10 +178,14 @@ public async Task RejectPendingRequest(Int64 target_user_id)
176178 }
177179
178180 // remove the request from requestor (online version)
179- #pragma warning disable CS8602 // Dereference of a possibly null reference.
180181 UserSession ? userData = WebSocketManager . GetDataFromUser ( source_user_id ) ;
182+ if ( userData == null )
183+ {
184+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
185+ return ;
186+ }
187+
181188 userData . GetSocialContainer ( ) . PendingRequests . Remove ( target_user_id ) ;
182- #pragma warning restore CS8602 // Dereference of a possibly null reference.
183189
184190 // remove the request from requestor (db)
185191 // NOTE: Target and source are inverted here because the target is actually the person who sent the request, source is the person taking action on the friend request
@@ -212,14 +218,18 @@ public async Task RemoveFriend(Int64 target_user_id)
212218 }
213219
214220 // must be friends
215- #pragma warning disable CS8602 // Dereference of a possibly null reference.
216221 UserSession ? userData = WebSocketManager . GetDataFromUser ( source_user_id ) ;
222+ if ( userData == null )
223+ {
224+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
225+ return ;
226+ }
227+
217228 if ( ! userData . GetSocialContainer ( ) . Friends . Contains ( target_user_id ) )
218229 {
219230 Response . StatusCode = ( int ) HttpStatusCode . NotFound ;
220231 return ;
221232 }
222- #pragma warning restore CS8602 // Dereference of a possibly null reference.
223233
224234 // remove the request from requestor (online version)
225235 userData . GetSocialContainer ( ) . Friends . Remove ( target_user_id ) ;
@@ -262,25 +272,28 @@ public async Task AddFriend(Int64 target_user_id)
262272 // too many friends?
263273 const int friendsLimit = 200 ;
264274 UserSession ? userData = WebSocketManager . GetDataFromUser ( requester_user_id ) ;
265- if ( userData . GetSocialContainer ( ) . Friends . Count >= friendsLimit )
266- {
267- if ( userData != null )
268- {
269- WebSocketMessage_Social_FriendsListFull friendsListFullEvent = new ( ) ;
270- friendsListFullEvent . msg_id = ( int ) EWebSocketMessageID . SOCIAL_CANT_ADD_FRIEND_LIST_FULL ;
271- byte [ ] bytesJSON = Encoding . UTF8 . GetBytes ( JsonSerializer . Serialize ( friendsListFullEvent ) ) ;
272- userData . QueueWebsocketSend ( bytesJSON ) ;
273- }
275+ if ( userData == null )
276+ {
277+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
278+ return ;
279+ }
280+
281+ if ( userData . GetSocialContainer ( ) . Friends . Count >= friendsLimit )
282+ {
283+ WebSocketMessage_Social_FriendsListFull friendsListFullEvent = new ( ) ;
284+ friendsListFullEvent . msg_id = ( int ) EWebSocketMessageID . SOCIAL_CANT_ADD_FRIEND_LIST_FULL ;
285+ byte [ ] bytesJSON = Encoding . UTF8 . GetBytes ( JsonSerializer . Serialize ( friendsListFullEvent ) ) ;
286+ userData . QueueWebsocketSend ( bytesJSON ) ;
287+ Response . StatusCode = ( int ) HttpStatusCode . Conflict ;
288+ return ;
274289 }
275290
276291 // Check not already friends
277- #pragma warning disable CS8602 // Dereference of a possibly null reference.
278292 if ( userData . GetSocialContainer ( ) . Friends . Contains ( target_user_id ) )
279293 {
280294 Response . StatusCode = ( int ) HttpStatusCode . Conflict ;
281295 return ;
282296 }
283- #pragma warning restore CS8602 // Dereference of a possibly null reference.
284297
285298 // the other user must be online, theres no way to add offline people in the client
286299
@@ -319,7 +332,7 @@ public async Task AddFriend(Int64 target_user_id)
319332 if ( userData . GetSocialContainer ( ) . PendingRequests . Contains ( target_user_id ) )
320333 {
321334 // accept their request
322- HelperFunction_AcceptFriendRequest ( requester_user_id , target_user_id ) ;
335+ await HelperFunction_AcceptFriendRequest ( requester_user_id , target_user_id ) ;
323336 }
324337 else
325338 {
@@ -368,10 +381,14 @@ public async Task<APIResult> Get_FriendsAndRequests()
368381
369382 // get websockets & data
370383 UserSession ? sourceData = WebSocketManager . GetDataFromUser ( requester_user_id ) ;
384+ if ( sourceData == null )
385+ {
386+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
387+ return result ;
388+ }
389+
371390
372- #pragma warning disable CS8602 // Dereference of a possibly null reference.
373391 HashSet < Int64 > setFriends = sourceData . GetSocialContainer ( ) . Friends ;
374- #pragma warning restore CS8602 // Dereference of a possibly null reference.
375392 HashSet < Int64 > setPendingRequests = sourceData . GetSocialContainer ( ) . PendingRequests ;
376393
377394 List < Int64 > lstCombined = new List < Int64 > ( ) ;
@@ -465,10 +482,14 @@ public async Task<APIResult> Get_Blocked()
465482 }
466483
467484 UserSession ? sourceData = WebSocketManager . GetDataFromUser ( requester_user_id ) ;
485+ if ( sourceData == null )
486+ {
487+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
488+ return result ;
489+ }
490+
468491
469- #pragma warning disable CS8602 // Dereference of a possibly null reference.
470492 HashSet < Int64 > setBlocked = sourceData . GetSocialContainer ( ) . Blocked ;
471- #pragma warning restore CS8602 // Dereference of a possibly null reference.
472493
473494 Dictionary < Int64 , string > dictDisplayNames = await Database . Functions . Auth . GetDisplayNameBulk ( GlobalDatabaseInstance . g_Database , setBlocked . ToList ( ) ) ;
474495
@@ -529,7 +550,12 @@ public async Task Add_Block(Int64 target_user_id)
529550 // Check not already blocked
530551 UserSession ? sourceData = WebSocketManager . GetDataFromUser ( requester_user_id ) ;
531552
532- #pragma warning disable CS8602 // Dereference of a possibly null reference.
553+ if ( sourceData == null )
554+ {
555+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
556+ return ;
557+ }
558+
533559 if ( sourceData . GetSocialContainer ( ) . Blocked . Contains ( target_user_id ) )
534560 {
535561 Response . StatusCode = ( int ) HttpStatusCode . Conflict ;
@@ -547,8 +573,6 @@ public async Task Add_Block(Int64 target_user_id)
547573 }
548574 }
549575
550- #pragma warning restore CS8602 // Dereference of a possibly null reference.
551-
552576 // We must:
553577 //// - Remove from source friends, DB (if present)
554578 //// - Remove from source friends, Cache (if present)
@@ -606,14 +630,18 @@ public async Task Remove_Block(Int64 target_user_id)
606630
607631 UserSession ? sourceData = WebSocketManager . GetDataFromUser ( requester_user_id ) ;
608632
633+ if ( sourceData == null )
634+ {
635+ Response . StatusCode = ( int ) HttpStatusCode . Forbidden ;
636+ return ;
637+ }
638+
609639 // Check blocked
610- #pragma warning disable CS8602 // Dereference of a possibly null reference.
611640 if ( ! sourceData . GetSocialContainer ( ) . Blocked . Contains ( target_user_id ) )
612641 {
613642 Response . StatusCode = ( int ) HttpStatusCode . Conflict ;
614643 return ;
615644 }
616- #pragma warning restore CS8602 // Dereference of a possibly null reference.
617645
618646 // - Remove from block list (cache)
619647 sourceData . GetSocialContainer ( ) . Blocked . Remove ( target_user_id ) ;
0 commit comments