fix closing already closed channel error

This commit is contained in:
Loïs BIBEHE 2023-07-20 22:11:48 +02:00
parent c557c60860
commit 94f595a953
No known key found for this signature in database
GPG Key ID: 85BCF4EEE9A29479
5 changed files with 38 additions and 10 deletions

View File

@ -524,11 +524,15 @@ func (cm *ChatsManager) createPeerConnection(target string, from string, chatId
}) })
dc.OnClose(func() { dc.OnClose(func() {
fmt.Println("closing gracefully event dc...") fmt.Println("closing gracefully event dc...")
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
}) })
dc.OnError(func(err error) { dc.OnError(func(err error) {
// logger.Println("--------------- error in dc:", err) // logger.Println("--------------- error in dc:", err)
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
}) })
dc.OnMessage(func(msg webrtc.DataChannelMessage) { dc.OnMessage(func(msg webrtc.DataChannelMessage) {
var req ChatRequest var req ChatRequest

View File

@ -104,7 +104,11 @@ func (zm *SquadGrpcMiddleware) Process(ctx context.Context, req *SignalingMessag
reqChan := make(chan *SquadRequest) reqChan := make(chan *SquadRequest)
d, e := zm.Manager.Squads[payload["squadId"]].SquadRequestScheduler.Schedule(reqChan) d, e := zm.Manager.Squads[payload["squadId"]].SquadRequestScheduler.Schedule(reqChan)
go func() { go func() {
defer close(reqChan) defer func() {
if _, closed := <-reqChan; !closed {
close(reqChan)
}
}()
reqChan <- &SquadRequest{ reqChan <- &SquadRequest{
ReqType: string(REMOVED_SQUAD_AUTHORIZED_MEMBER), ReqType: string(REMOVED_SQUAD_AUTHORIZED_MEMBER),
From: payload["userId"], From: payload["userId"],
@ -131,7 +135,11 @@ func (zm *SquadGrpcMiddleware) Process(ctx context.Context, req *SignalingMessag
reqChan := make(chan *SquadRequest) reqChan := make(chan *SquadRequest)
d, e := zm.Manager.Squads[payload["squadId"]].SquadRequestScheduler.Schedule(reqChan) d, e := zm.Manager.Squads[payload["squadId"]].SquadRequestScheduler.Schedule(reqChan)
go func() { go func() {
defer close(reqChan) defer func() {
if _, closed := <-reqChan; !closed {
close(reqChan)
}
}()
reqChan <- &SquadRequest{ reqChan <- &SquadRequest{
ReqType: string(NEW_AUTHORIZED_SQUAD_MEMBER), ReqType: string(NEW_AUTHORIZED_SQUAD_MEMBER),
From: payload["userId"], From: payload["userId"],

View File

@ -442,11 +442,15 @@ func (zm *SquadManager) createPeerConnection(target string, from string, squadId
} }
}) })
channel.OnClose(func() { channel.OnClose(func() {
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
//_ = zm.HandleLeavingMember(target, squadId, true) //_ = zm.HandleLeavingMember(target, squadId, true)
}) })
channel.OnError(func(err error) { channel.OnError(func(err error) {
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
//_ = zm.HandleLeavingMember(target, squadId, true) //_ = zm.HandleLeavingMember(target, squadId, true)
}) })
channel.OnMessage(func(msg webrtc.DataChannelMessage) { channel.OnMessage(func(msg webrtc.DataChannelMessage) {

View File

@ -104,7 +104,11 @@ func (zm *ZoneGrpcMiddleware) Process(ctx context.Context, req *SignalingMessage
} }
done, e := zm.Manager.Zones[payload["zoneId"]].ZoneRequestScheduler.Schedule(reqChan) done, e := zm.Manager.Zones[payload["zoneId"]].ZoneRequestScheduler.Schedule(reqChan)
go func() { go func() {
defer close(reqChan) defer func() {
if _, closed := <-reqChan; !closed {
close(reqChan)
}
}()
reqChan <- &ZoneRequest{ reqChan <- &ZoneRequest{
ReqType: string(REMOVED_ZONE_AUTHORIZED_MEMBER), ReqType: string(REMOVED_ZONE_AUTHORIZED_MEMBER),
From: payload["userId"], From: payload["userId"],
@ -138,7 +142,11 @@ func (zm *ZoneGrpcMiddleware) Process(ctx context.Context, req *SignalingMessage
reqChan := make(chan *ZoneRequest) reqChan := make(chan *ZoneRequest)
done, e := zm.Manager.Zones[payload["zoneId"]].ZoneRequestScheduler.Schedule(reqChan) done, e := zm.Manager.Zones[payload["zoneId"]].ZoneRequestScheduler.Schedule(reqChan)
go func() { go func() {
defer close(reqChan) defer func() {
if _, closed := <-reqChan; !closed {
close(reqChan)
}
}()
// reqChan <- &ZoneRequest{ // reqChan <- &ZoneRequest{
// ReqType: string(ADD_USER), // ReqType: string(ADD_USER),
// From: payload["userId"], // From: payload["userId"],

View File

@ -458,11 +458,15 @@ func (zm *ZoneManager) createPeerConnection(target string, from string, zoneId s
} }
}) })
channel.OnClose(func() { channel.OnClose(func() {
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
//_ = zm.HandleLeavingMember(target, zoneId, true) //_ = zm.HandleLeavingMember(target, zoneId, true)
}) })
channel.OnError(func(err error) { channel.OnError(func(err error) {
if _, closed := <-reqChan; !closed {
close(reqChan) close(reqChan)
}
//_ = zm.HandleLeavingMember(target, zoneId, true) //_ = zm.HandleLeavingMember(target, zoneId, true)
}) })
channel.OnMessage(func(msg webrtc.DataChannelMessage) { channel.OnMessage(func(msg webrtc.DataChannelMessage) {