|
|
@@ -424,13 +424,16 @@ impl RendezvousServer {
|
|
424
|
424
|
if relay_server.is_empty() {
|
|
425
|
425
|
relay_server = self.relay_server.clone();
|
|
426
|
426
|
}
|
|
427
|
|
- msg_out.set_punch_hole_response(PunchHoleResponse {
|
|
|
427
|
+ let mut p = PunchHoleResponse {
|
|
428
|
428
|
socket_addr: AddrMangle::encode(addr),
|
|
429
|
429
|
pk,
|
|
430
|
430
|
relay_server,
|
|
431
|
|
- nat_type: phs.nat_type,
|
|
432
|
431
|
..Default::default()
|
|
433
|
|
- });
|
|
|
432
|
+ };
|
|
|
433
|
+ if let Ok(t) = phs.nat_type.enum_value() {
|
|
|
434
|
+ p.set_nat_type(t);
|
|
|
435
|
+ }
|
|
|
436
|
+ msg_out.set_punch_hole_response(p);
|
|
434
|
437
|
if let Some(socket) = socket {
|
|
435
|
438
|
socket.send(&msg_out, addr_a).await?;
|
|
436
|
439
|
} else {
|
|
|
@@ -459,11 +462,13 @@ impl RendezvousServer {
|
|
459
|
462
|
if relay_server.is_empty() {
|
|
460
|
463
|
relay_server = self.relay_server.clone();
|
|
461
|
464
|
}
|
|
462
|
|
- msg_out.set_punch_hole_response(PunchHoleResponse {
|
|
|
465
|
+ let mut p = PunchHoleResponse {
|
|
463
|
466
|
socket_addr: la.local_addr.clone(),
|
|
464
|
467
|
relay_server,
|
|
465
|
468
|
..Default::default()
|
|
466
|
|
- });
|
|
|
469
|
+ };
|
|
|
470
|
+ p.set_is_local(true);
|
|
|
471
|
+ msg_out.set_punch_hole_response(p);
|
|
467
|
472
|
if let Some(socket) = socket {
|
|
468
|
473
|
socket.send(&msg_out, addr_a).await?;
|
|
469
|
474
|
} else {
|