Remove the pollInterval loop from SignalingServer.pollOffer in the standalone proxy

Closes #40210.
This commit is contained in:
Neel Chauhan 2024-10-13 21:37:48 -04:00 committed by Cecylia Bocovich
parent a7855d506c
commit f4305180b9
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90
2 changed files with 27 additions and 38 deletions

View file

@ -364,7 +364,7 @@ func TestBrokerInteractions(t *testing.T) {
b, b,
} }
sdp, _ := broker.pollOffer(sampleOffer, DefaultProxyType, "", DefaultPollInterval, nil) sdp, _ := broker.pollOffer(sampleOffer, DefaultProxyType, "")
expectedSDP, _ := strconv.Unquote(sampleSDP) expectedSDP, _ := strconv.Unquote(sampleSDP)
So(sdp.SDP, ShouldResemble, expectedSDP) So(sdp.SDP, ShouldResemble, expectedSDP)
}) })
@ -378,7 +378,7 @@ func TestBrokerInteractions(t *testing.T) {
b, b,
} }
sdp, _ := broker.pollOffer(sampleOffer, DefaultProxyType, "", DefaultPollInterval, nil) sdp, _ := broker.pollOffer(sampleOffer, DefaultProxyType, "")
So(sdp, ShouldBeNil) So(sdp, ShouldBeNil)
}) })
Convey("sends answer to broker", func() { Convey("sends answer to broker", func() {

View file

@ -234,46 +234,35 @@ func (s *SignalingServer) Post(path string, payload io.Reader) ([]byte, error) {
// pollOffer communicates the proxy's capabilities with broker // pollOffer communicates the proxy's capabilities with broker
// and retrieves a compatible SDP offer and relay URL. // and retrieves a compatible SDP offer and relay URL.
func (s *SignalingServer) pollOffer(sid string, proxyType string, acceptedRelayPattern string, pollInterval time.Duration, shutdown chan struct{}) (*webrtc.SessionDescription, string) { func (s *SignalingServer) pollOffer(sid string, proxyType string, acceptedRelayPattern string) (*webrtc.SessionDescription, string) {
brokerPath := s.url.ResolveReference(&url.URL{Path: "proxy"}) brokerPath := s.url.ResolveReference(&url.URL{Path: "proxy"})
ticker := time.NewTicker(pollInterval) numClients := int((tokens.count() / 8) * 8) // Round down to 8
defer ticker.Stop() currentNATTypeLoaded := getCurrentNATType()
body, err := messages.EncodeProxyPollRequestWithRelayPrefix(sid, proxyType, currentNATTypeLoaded, numClients, acceptedRelayPattern)
if err != nil {
log.Printf("Error encoding poll message: %s", err.Error())
return nil, ""
}
// Run the loop once before hitting the ticker resp, err := s.Post(brokerPath.String(), bytes.NewBuffer(body))
for ; true; <-ticker.C { if err != nil {
select { log.Printf("error polling broker: %s", err.Error())
case <-shutdown: }
offer, _, relayURL, err := messages.DecodePollResponseWithRelayURL(resp)
if err != nil {
log.Printf("Error reading broker response: %s", err.Error())
log.Printf("body: %s", resp)
return nil, ""
}
if offer != "" {
offer, err := util.DeserializeSessionDescription(offer)
if err != nil {
log.Printf("Error processing session description: %s", err.Error())
return nil, "" return nil, ""
default:
numClients := int((tokens.count() / 8) * 8) // Round down to 8
currentNATTypeLoaded := getCurrentNATType()
body, err := messages.EncodeProxyPollRequestWithRelayPrefix(sid, proxyType, currentNATTypeLoaded, numClients, acceptedRelayPattern)
if err != nil {
log.Printf("Error encoding poll message: %s", err.Error())
return nil, ""
}
resp, err := s.Post(brokerPath.String(), bytes.NewBuffer(body))
if err != nil {
log.Printf("error polling broker: %s", err.Error())
}
offer, _, relayURL, err := messages.DecodePollResponseWithRelayURL(resp)
if err != nil {
log.Printf("Error reading broker response: %s", err.Error())
log.Printf("body: %s", resp)
return nil, ""
}
if offer != "" {
offer, err := util.DeserializeSessionDescription(offer)
if err != nil {
log.Printf("Error processing session description: %s", err.Error())
return nil, ""
}
return offer, relayURL
}
} }
return offer, relayURL
} }
return nil, "" return nil, ""
} }
@ -609,7 +598,7 @@ func (sf *SnowflakeProxy) makeNewPeerConnection(
} }
func (sf *SnowflakeProxy) runSession(sid string) { func (sf *SnowflakeProxy) runSession(sid string) {
offer, relayURL := broker.pollOffer(sid, sf.ProxyType, sf.RelayDomainNamePattern, sf.PollInterval, sf.shutdown) offer, relayURL := broker.pollOffer(sid, sf.ProxyType, sf.RelayDomainNamePattern)
if offer == nil { if offer == nil {
log.Printf("bad offer from broker") log.Printf("bad offer from broker")
tokens.ret() tokens.ret()