@@ -300,6 +300,36 @@ func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error) {
300
300
return c , nil
301
301
}
302
302
303
+ // DialUDPContext acts like DialUDP but connects using
304
+ // the provided context.
305
+ //
306
+ // The provided Context must be non-nil.
307
+ //
308
+ // The network must be a UDP network name; see func Dial for details.
309
+ //
310
+ // If laddr is nil, a local address is automatically chosen.
311
+ // If the IP field of raddr is nil or an unspecified IP address, the
312
+ // local system is assumed.
313
+ func DialUDPContext (ctx context.Context , network string , laddr , raddr * UDPAddr ) (* UDPConn , error ) {
314
+ if ctx == nil {
315
+ panic ("nil context" )
316
+ }
317
+ switch network {
318
+ case "udp" , "udp4" , "udp6" :
319
+ default :
320
+ return nil , & OpError {Op : "dial" , Net : network , Source : laddr .opAddr (), Addr : raddr .opAddr (), Err : UnknownNetworkError (network )}
321
+ }
322
+ if raddr == nil {
323
+ return nil , & OpError {Op : "dial" , Net : network , Source : laddr .opAddr (), Addr : nil , Err : errMissingAddress }
324
+ }
325
+ sd := & sysDialer {network : network , address : raddr .String ()}
326
+ c , err := sd .dialUDP (ctx , laddr , raddr )
327
+ if err != nil {
328
+ return nil , & OpError {Op : "dial" , Net : network , Source : laddr .opAddr (), Addr : raddr .opAddr (), Err : err }
329
+ }
330
+ return c , nil
331
+ }
332
+
303
333
// ListenUDP acts like ListenPacket for UDP networks.
304
334
//
305
335
// The network must be a UDP network name; see func Dial for details.
0 commit comments