Skip to content
This repository was archived by the owner on Dec 2, 2023. It is now read-only.

Commit daafc47

Browse files
authored
(fix) fix no transport error when trickle (#573)
1 parent d6ce77e commit daafc47

2 files changed

Lines changed: 24 additions & 23 deletions

File tree

docker-compose.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@ services:
3030
networks:
3131
- ionnet
3232

33-
avp:
34-
image: pionwebrtc/ion:latest-avp
35-
build:
36-
dockerfile: ./docker/avp.Dockerfile
37-
context: .
38-
volumes:
39-
- "./configs/docker/avp.toml:/configs/avp.toml"
40-
- "./out:/out/"
41-
depends_on:
42-
- nats
43-
- islb
44-
networks:
45-
- ionnet
33+
#avp:
34+
# image: pionwebrtc/ion:latest-avp
35+
# build:
36+
# dockerfile: ./docker/avp.Dockerfile
37+
# context: .
38+
# volumes:
39+
# - "./configs/docker/avp.toml:/configs/avp.toml"
40+
# - "./out:/out/"
41+
# depends_on:
42+
# - nats
43+
# - islb
44+
# networks:
45+
# - ionnet
4646

4747
signal:
4848
image: pionwebrtc/ion:latest-signal

pkg/node/sfu/server.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func (s *sfuServer) postISLBEvent(event *islb.ISLBEvent) {
4949
}
5050

5151
func (s *sfuServer) Signal(stream pb.SFU_SignalServer) error {
52+
recvCandidates := []webrtc.ICECandidateInit{}
5253
peer := isfu.NewPeer(s.sfu)
5354
var streams []*ion.Stream
5455

@@ -326,20 +327,20 @@ func (s *sfuServer) Signal(stream pb.SFU_SignalServer) error {
326327
continue
327328
}
328329

330+
// trickle the old candidates
331+
for _, candidate := range recvCandidates {
332+
err = peer.Trickle(candidate, int(payload.Trickle.Target))
333+
if err != nil {
334+
log.Warnf("peer trickle error: %v", err)
335+
}
336+
}
329337
err = peer.Trickle(candidate, int(payload.Trickle.Target))
330338
if err != nil {
331339
switch err {
332340
case isfu.ErrNoTransportEstablished:
333-
log.Errorf("peer hasn't joined, error -> %v", err)
334-
err = stream.Send(&pb.SignalReply{
335-
Payload: &pb.SignalReply_Error{
336-
Error: fmt.Errorf("trickle error: %w", err).Error(),
337-
},
338-
})
339-
if err != nil {
340-
log.Errorf("grpc send error: %v", err)
341-
return status.Errorf(codes.Internal, err.Error())
342-
}
341+
// cadidate arrived before join, cache it
342+
log.Infof("cadidate arrived before join, cache it: %v", candidate)
343+
recvCandidates = append(recvCandidates, candidate)
343344
default:
344345
return status.Errorf(codes.Unknown, fmt.Sprintf("negotiate error: %v", err))
345346
}

0 commit comments

Comments
 (0)