From e95650fd39afb54db43bef6ce1a6f2553e4d00c4 Mon Sep 17 00:00:00 2001 From: Hariprasath2603 Date: Mon, 24 Jan 2022 15:39:07 +0530 Subject: [PATCH 1/5] fix: peers avatar and extraInfo not updating on redis Everywhere we have type declaration and usage for avatar and extraInfo for peer. But not set on redis while creating peers. --- apps/room/server/room_signal.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/room/server/room_signal.go b/apps/room/server/room_signal.go index d18dbd55a..de05c5de6 100644 --- a/apps/room/server/room_signal.go +++ b/apps/room/server/room_signal.go @@ -181,7 +181,7 @@ func (s *RoomSignalService) Join(in *room.Request_Join, stream room.RoomSignal_S // store peer to redis key = util.GetRedisPeerKey(sid, uid) err := s.rs.redis.HMSetTTL(roomRedisExpire, key, "sid", sid, "uid", uid, "dest", in.Join.Peer.Destination, - "name", in.Join.Peer.DisplayName, "role", in.Join.Peer.Role.String(), "protocol", in.Join.Peer.Protocol.String(), "direction", in.Join.Peer.Direction.String()) + "name", in.Join.Peer.DisplayName, "role", in.Join.Peer.Role.String(), "protocol", in.Join.Peer.Protocol.String(), "direction", in.Join.Peer.Direction.String(), "avatar", in.Join.Peer.Avatar, "info", in.Join.Peer.ExtraInfo) if err != nil { reply := &room.Reply_Join{ Join: &room.JoinReply{ From 8c3f17e2f0385287f9de5bc12c639aaf30393c87 Mon Sep 17 00:00:00 2001 From: Hariprasath2603 Date: Tue, 25 Jan 2022 11:58:20 +0530 Subject: [PATCH 2/5] fix: SA5011 lint error on room_signal file Before pinfo null check routines returning error sid and uid are dereferenced. Moved the dereference after error handling for null check. --- apps/room/server/room_signal.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/room/server/room_signal.go b/apps/room/server/room_signal.go index de05c5de6..73e7c3c86 100644 --- a/apps/room/server/room_signal.go +++ b/apps/room/server/room_signal.go @@ -97,8 +97,6 @@ func (s *RoomSignalService) Signal(stream room.RoomSignal_SignalServer) error { func (s *RoomSignalService) Join(in *room.Request_Join, stream room.RoomSignal_SignalServer) (*room.Reply_Join, *Peer, error) { pinfo := in.Join.Peer - sid := pinfo.Sid - uid := pinfo.Uid if pinfo == nil || pinfo.Sid == "" && pinfo.Uid == "" { reply := &room.Reply_Join{ @@ -113,6 +111,10 @@ func (s *RoomSignalService) Join(in *room.Request_Join, stream room.RoomSignal_S } return reply, nil, status.Errorf(codes.Internal, "sid/uid is empty") } + + sid := pinfo.Sid + uid := pinfo.Uid + key := util.GetRedisRoomKey(sid) // create in redis if room not exist if sid == "" { From 5152703575aa69c2e1defe99aebbca2d3b06e2a4 Mon Sep 17 00:00:00 2001 From: Hariprasath2603 Date: Sat, 29 Jan 2022 12:52:21 +0530 Subject: [PATCH 3/5] fix: extraInfo and avatar are not reflecting on UpdatePeer and AddPeer On UpdatePeer event and AddPeer methods there is missing implementation for updating or adding avatar and extrInfo of a peer. --- apps/room/server/room_service.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/room/server/room_service.go b/apps/room/server/room_service.go index 98d4e114a..dd8a5d648 100644 --- a/apps/room/server/room_service.go +++ b/apps/room/server/room_service.go @@ -227,6 +227,8 @@ func (s *RoomService) AddPeer(ctx context.Context, in *room.AddPeerRequest) (*ro role := in.Peer.Role.String() protocol := in.Peer.Protocol.String() direction := in.Peer.Direction.String() + avatar := in.Peer.Avatar + extraInfo := in.Peer.ExtraInfo // check room exist key := util.GetRedisRoomKey(sid) @@ -273,7 +275,8 @@ func (s *RoomService) AddPeer(ctx context.Context, in *room.AddPeerRequest) (*ro // store peer to redis key = util.GetRedisPeerKey(sid, uid) err := s.redis.HMSetTTL(roomRedisExpire, key, "sid", sid, "uid", uid, "dest", dest, - "name", name, "role", role, "protocol", protocol, "direction", direction) + "name", name, "role", role, "protocol", protocol, "direction", direction, + "avatar", avatar, "info", extraInfo) if err != nil { return &room.AddPeerReply{ @@ -308,6 +311,9 @@ func (s *RoomService) UpdatePeer(ctx context.Context, in *room.UpdatePeerRequest role := in.Peer.Role.String() protocol := in.Peer.Protocol.String() direction := in.Peer.Direction.String() + avatar := in.Peer.Avatar + extraInfo := in.Peer.ExtraInfo + // check room exist key := util.GetRedisRoomKey(sid) @@ -359,7 +365,7 @@ func (s *RoomService) UpdatePeer(ctx context.Context, in *room.UpdatePeerRequest key = util.GetRedisPeerKey(sid, uid) err := s.redis.HMSetTTL(roomRedisExpire, key, "sid", sid, "uid", uid, "destination", destination, - "name", name, "role", role, "protocol", protocol, "direction", direction) + "name", name, "role", role, "protocol", protocol, "direction", direction,"avatar", avatar, "info", extraInfo ) if err != nil { return &room.UpdatePeerReply{ From 23a56ce0b3c6b0748d42846966391540dfe87d59 Mon Sep 17 00:00:00 2001 From: Hariprasath2603 Date: Thu, 10 Feb 2022 11:13:02 +0530 Subject: [PATCH 4/5] fix: room not created if TTL expires while peers join Peers are able to join on the TTL expired room. But room entry not created on the redis only peers entry is created. Checking the room entry exist on the redis if not creating one. This kind of approach used on old version, removed on the latest releases. --- apps/room/server/room_signal.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/room/server/room_signal.go b/apps/room/server/room_signal.go index 73e7c3c86..e19ceb42b 100644 --- a/apps/room/server/room_signal.go +++ b/apps/room/server/room_signal.go @@ -116,8 +116,12 @@ func (s *RoomSignalService) Join(in *room.Request_Join, stream room.RoomSignal_S uid := pinfo.Uid key := util.GetRedisRoomKey(sid) + + resArray:= s.rs.redis.HMGet(key, "sid" ) + sidFromRedis:= resArray[0] + // create in redis if room not exist - if sid == "" { + if sid == "" || sidFromRedis =="" { // store room info sid = pinfo.Sid err := s.rs.redis.HMSetTTL(roomRedisExpire, key, "sid", sid, "name", pinfo.DisplayName, From 322536175d1f47e41cf4292e5c24929eb496f977 Mon Sep 17 00:00:00 2001 From: Hariprasath2603 Date: Mon, 21 Feb 2022 12:48:11 +0530 Subject: [PATCH 5/5] lint error for TTL expired user issue commit --- apps/room/server/room_service.go | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/room/server/room_service.go b/apps/room/server/room_service.go index 02426f503..33fb4997b 100644 --- a/apps/room/server/room_service.go +++ b/apps/room/server/room_service.go @@ -314,7 +314,6 @@ func (s *RoomService) UpdatePeer(ctx context.Context, in *room.UpdatePeerRequest avatar := in.Peer.Avatar extraInfo := in.Peer.ExtraInfo - // check room exist key := util.GetRedisRoomKey(sid) if s.redis.HGet(key, "sid") == "" {