Просмотр исходного кода

configure_update in testnatresponse

open-trade лет назад: 5
Родитель
Сommit
75dcbe47b7
4 измененных файлов с 14 добавлено и 7 удалено
  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 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 1
 mod rendezvous_server;
2 2
 mod sled_async;
3
-use sled_async::*;
4 3
 pub use rendezvous_server::*;
4
+use sled_async::*;
5 5
 mod version;
6 6
 pub use version::*;

+ 11 - 4
src/rendezvous_server.rs

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