- /*
- * Always update the peers. This will result in a push to the
- * peers with the updated capabilities feature mask. The peer can
- * then take appropriate action to update its representation of
- * the node.
- *
- * If discovery is already off, turn it on first before pushing
- * the update. The discovery flag must be on before pushing.
- * otherwise if the flag is on and we're turning it off then push
- * first before turning the flag off. In the former case the flag
- * is being set twice, but I find it's better to do that rather
- * than have duplicate code in an if/else statement.
- */
- if (*discovery > 0 && value == 0)
- *discovery = value;
- lnet_push_update_to_peers(1);
- *discovery = value;
+ /* only send a push when we're turning off discovery */
+ if (*discovery_off <= 0 && value > 0)
+ lnet_push_update_to_peers(1);
+ *discovery_off = value;