Browse Source

configure_update in testnatresponse

open-trade 5 years ago
parent
commit
75dcbe47b7
4 changed files with 14 additions and 7 deletions
  1. 1 1
      build.rs
  2. 1 1
      libs/hbb_common
  3. 1 1
      src/lib.rs
  4. 11 4
      src/rendezvous_server.rs

+ 1 - 1
build.rs

@@ -1,3 +1,3 @@
1
 fn main() {
1
 fn main() {
2
-  hbb_common::gen_version();
2
+    hbb_common::gen_version();
3
 }
3
 }

+ 1 - 1
libs/hbb_common

@@ -1 +1 @@
1
-Subproject commit be1f253e874c6df065c1d9ce22a5ab9e4ebd498a
1
+Subproject commit 3f862eaa423823b6a4c9a62e6b36f3b692cfd06f

+ 1 - 1
src/lib.rs

@@ -1,6 +1,6 @@
1
 mod rendezvous_server;
1
 mod rendezvous_server;
2
 mod sled_async;
2
 mod sled_async;
3
-use sled_async::*;
4
 pub use rendezvous_server::*;
3
 pub use rendezvous_server::*;
4
+use sled_async::*;
5
 mod version;
5
 mod version;
6
 pub use version::*;
6
 pub use version::*;

+ 11 - 4
src/rendezvous_server.rs

@@ -7,7 +7,7 @@ use hbb_common::{
7
         stream::{SplitSink, StreamExt},
7
         stream::{SplitSink, StreamExt},
8
     },
8
     },
9
     log,
9
     log,
10
-    protobuf::Message as _,
10
+    protobuf::{Message as _, MessageField},
11
     rendezvous_proto::*,
11
     rendezvous_proto::*,
12
     tcp::{new_listener, FramedStream},
12
     tcp::{new_listener, FramedStream},
13
     timeout,
13
     timeout,
@@ -236,12 +236,19 @@ impl RendezvousServer {
236
                                         allow_err!(rs.handle_local_addr(la, addr, None).await);
236
                                         allow_err!(rs.handle_local_addr(la, addr, None).await);
237
                                         break;
237
                                         break;
238
                                     }
238
                                     }
239
-                                    Some(rendezvous_message::Union::test_nat_request(_)) => {
239
+                                    Some(rendezvous_message::Union::test_nat_request(tar)) => {
240
                                         let mut msg_out = RendezvousMessage::new();
240
                                         let mut msg_out = RendezvousMessage::new();
241
-                                        msg_out.set_test_nat_response(TestNatResponse {
241
+                                        let mut res = TestNatResponse {
242
                                             port: addr.port() as _,
242
                                             port: addr.port() as _,
243
                                             ..Default::default()
243
                                             ..Default::default()
244
-                                        });
244
+                                        }
245
+                                        if rs.serial > tar.serial {
246
+                                            let mut cu = ConfigUpdate::new();
247
+                                            cu.serial = rs.serial;
248
+                                            cu.rendezvous_servers = rs.rendezvous_servers.clone();
249
+                                            res.cu = MessageField::from_option(Some(cu));
250
+                                        }
251
+                                        msg_out.set_test_nat_response(res);
245
                                         if let Some(tcp) = sender.as_mut() {
252
                                         if let Some(tcp) = sender.as_mut() {
246
                                             if let Ok(bytes) = msg_out.write_to_bytes() {
253
                                             if let Ok(bytes) = msg_out.write_to_bytes() {
247
                                                 allow_err!(tcp.send(Bytes::from(bytes)).await);
254
                                                 allow_err!(tcp.send(Bytes::from(bytes)).await);