mirror of
				https://github.com/pion/webrtc.git
				synced 2025-11-01 03:04:06 +08:00 
			
		
		
		
	 7243561f2f
			
		
	
	7243561f2f
	
	
	
		
			
			The parser included in the ice package strictly adheres to RFC 7064,
however, this can be problematic when attempting to use ICE server URLs
that were automatically generated by a third party.
Twilio, for example, has been seen to send the following in its list of
ICE servers:
    stun:global.stun.twilio.com:3478?transport=udp
which would require user intervention to sanitise before passing to
Pion.
This patch side-steps this aspect of ice.ParseURL by pre-stripping any
queries that may be present so that we can allow URLs of this form.
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package webrtc
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestConfiguration_getICEServers(t *testing.T) {
 | |
| 	t.Run("Success", func(t *testing.T) {
 | |
| 		expectedServerStr := "stun:stun.l.google.com:19302"
 | |
| 		cfg := Configuration{
 | |
| 			ICEServers: []ICEServer{
 | |
| 				{
 | |
| 					URLs: []string{expectedServerStr},
 | |
| 				},
 | |
| 			},
 | |
| 		}
 | |
| 
 | |
| 		parsedURLs, err := cfg.getICEServers()
 | |
| 		assert.Nil(t, err)
 | |
| 		assert.Equal(t, expectedServerStr, (*parsedURLs)[0].String())
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Failure", func(t *testing.T) {
 | |
| 		expectedServerStr := "stun.l.google.com:19302"
 | |
| 		cfg := Configuration{
 | |
| 			ICEServers: []ICEServer{
 | |
| 				{
 | |
| 					URLs: []string{expectedServerStr},
 | |
| 				},
 | |
| 			},
 | |
| 		}
 | |
| 
 | |
| 		_, err := cfg.getICEServers()
 | |
| 		assert.NotNil(t, err)
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Success", func(t *testing.T) {
 | |
| 		// ignore the fact that stun URLs shouldn't have a query
 | |
| 		serverStr := "stun:global.stun.twilio.com:3478?transport=udp"
 | |
| 		expectedServerStr := "stun:global.stun.twilio.com:3478"
 | |
| 		cfg := Configuration{
 | |
| 			ICEServers: []ICEServer{
 | |
| 				{
 | |
| 					URLs: []string{serverStr},
 | |
| 				},
 | |
| 			},
 | |
| 		}
 | |
| 
 | |
| 		parsedURLs, err := cfg.getICEServers()
 | |
| 		assert.Nil(t, err)
 | |
| 		assert.Equal(t, expectedServerStr, (*parsedURLs)[0].String())
 | |
| 	})
 | |
| }
 |