47 lines
1.8 KiB
Diff
47 lines
1.8 KiB
Diff
commit bdca59455c9b91b112a5c27eba2ccba3f606797d
|
|
Author: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
|
|
Date: Mon Mar 31 11:18:30 2014 +0200
|
|
|
|
Fix processing error for fragmented hellos
|
|
|
|
diff --git a/src/process_package.c b/src/process_package.c
|
|
index 780efab..b39b692 100644
|
|
--- a/src/process_package.c
|
|
+++ b/src/process_package.c
|
|
@@ -441,21 +441,15 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni
|
|
|
|
/* find the input interface in the list of neighbor interfaces */
|
|
for (walker = message->neighbors; walker != NULL; walker = walker->next) {
|
|
- if (walker->link != UNSPEC_LINK
|
|
- && ipequal(&walker->address, &in_if->ip_addr)) {
|
|
+ if (ipequal(&walker->address, &in_if->ip_addr)) {
|
|
+ /*
|
|
+ * memorize our neighbour's idea of the link quality, so that we
|
|
+ * know the link quality in both directions
|
|
+ */
|
|
+ olsr_memorize_foreign_hello_lq(lnk, walker->link != UNSPEC_LINK ? walker : NULL);
|
|
break;
|
|
}
|
|
}
|
|
-
|
|
- /*
|
|
- * memorize our neighbour's idea of the link quality, so that we
|
|
- * know the link quality in both directions
|
|
- *
|
|
- * walker is NULL if there the current interface was not included in
|
|
- * the message (or was included as an UNSPEC_LINK)
|
|
- */
|
|
- olsr_memorize_foreign_hello_lq(lnk, walker);
|
|
-
|
|
/* update packet loss for link quality calculation */
|
|
olsr_received_hello_handler(lnk);
|
|
}
|
|
@@ -493,7 +487,7 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if, const uni
|
|
if (neighbor->willingness != WILL_NEVER)
|
|
process_message_neighbors(neighbor, message);
|
|
|
|
- /* Process changes immedeatly in case of MPR updates */
|
|
+ /* Process changes immediately in case of MPR updates */
|
|
olsr_process_changes();
|
|
|
|
olsr_free_hello_packet(message);
|