@@ -17,6 +17,10 @@ import (
1717)
1818
1919func newRegisterUDPSessionCall (t * testing.T , traceContext string ) (tunnelrpc.SessionManager_registerUdpSession , func () (tunnelrpc.RegisterUdpSessionResponse , error )) {
20+ return newRegisterUDPSessionCallWithDstIP (t , []byte {127 , 0 , 0 , 1 }, traceContext )
21+ }
22+
23+ func newRegisterUDPSessionCallWithDstIP (t * testing.T , dstIP []byte , traceContext string ) (tunnelrpc.SessionManager_registerUdpSession , func () (tunnelrpc.RegisterUdpSessionResponse , error )) {
2024 t .Helper ()
2125
2226 _ , paramsSeg , err := capnp .NewMessage (capnp .SingleSegment (nil ))
@@ -31,7 +35,7 @@ func newRegisterUDPSessionCall(t *testing.T, traceContext string) (tunnelrpc.Ses
3135 if err := params .SetSessionId (sessionID [:]); err != nil {
3236 t .Fatal (err )
3337 }
34- if err := params .SetDstIp ([] byte { 127 , 0 , 0 , 1 } ); err != nil {
38+ if err := params .SetDstIp (dstIP ); err != nil {
3539 t .Fatal (err )
3640 }
3741 params .SetDstPort (53 )
@@ -197,3 +201,31 @@ func TestV2RPCUnregisterUDPSessionPropagatesMessage(t *testing.T) {
197201 t .Fatalf ("expected close reason propagated from edge, got %q" , reason )
198202 }
199203}
204+
205+ func TestV2RPCRegisterUDPSessionRejectsMissingDestinationIP (t * testing.T ) {
206+ inboundInstance := newLimitedInbound (t , 0 )
207+ inboundInstance .router = & packetDialingRouter {packetConn : newBlockingPacketConn ()}
208+ server := & cloudflaredServer {
209+ inbound : inboundInstance ,
210+ muxer : NewDatagramV2Muxer (inboundInstance , & captureDatagramSender {}, inboundInstance .logger ),
211+ ctx : context .Background (),
212+ logger : inboundInstance .logger ,
213+ }
214+ call , readResult := newRegisterUDPSessionCallWithDstIP (t , nil , "" )
215+
216+ if err := server .RegisterUdpSession (call ); err != nil {
217+ t .Fatal (err )
218+ }
219+
220+ result , err := readResult ()
221+ if err != nil {
222+ t .Fatal (err )
223+ }
224+ resultErr , err := result .Err ()
225+ if err != nil {
226+ t .Fatal (err )
227+ }
228+ if resultErr != "missing destination IP" {
229+ t .Fatalf ("unexpected result error %q" , resultErr )
230+ }
231+ }
0 commit comments