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

client: free link in peer_reset, do not require relay destinations to have a link

ambrop7 15 лет назад
Родитель
Сommit
d44f73e46a
1 измененных файлов с 8 добавлено и 6 удалено
  1. 8 6
      client/client.c

+ 8 - 6
client/client.c

@@ -1704,6 +1704,14 @@ int peer_reset (struct peer_data *peer)
 {
     peer_log(peer, BLOG_NOTICE, "resetting");
     
+    // free link
+    if (peer->have_link) {
+        if (peer->is_relay) {
+            peer_disable_relay_provider(peer);
+        }
+        peer_free_link(peer);
+    }
+    
     if (peer_am_master(peer)) {
         // if we're the master, schedule retry
         BReactor_SetTimer(&ss, &peer->reset_timer);
@@ -2121,12 +2129,6 @@ void peer_recv_handler_send (struct peer_data *peer, uint8_t *data, int data_len
             goto out;
         }
         
-        // check if the destination peer has link
-        if (!dest_peer->have_link) {
-            peer_log(peer, BLOG_NOTICE, "relay destination peer has no link");
-            goto out;
-        }
-        
         relay_dest = dest_peer;
     }