|
@@ -287,7 +287,6 @@ static void tipc_disc_timeout(struct timer_list *t)
|
|
{
|
|
{
|
|
struct tipc_discoverer *d = from_timer(d, t, timer);
|
|
struct tipc_discoverer *d = from_timer(d, t, timer);
|
|
struct tipc_net *tn = tipc_net(d->net);
|
|
struct tipc_net *tn = tipc_net(d->net);
|
|
- u32 self = tipc_own_addr(d->net);
|
|
|
|
struct tipc_media_addr maddr;
|
|
struct tipc_media_addr maddr;
|
|
struct sk_buff *skb = NULL;
|
|
struct sk_buff *skb = NULL;
|
|
struct net *net = d->net;
|
|
struct net *net = d->net;
|
|
@@ -301,12 +300,14 @@ static void tipc_disc_timeout(struct timer_list *t)
|
|
goto exit;
|
|
goto exit;
|
|
}
|
|
}
|
|
|
|
|
|
- /* Did we just leave the address trial period ? */
|
|
|
|
- if (!self && !time_before(jiffies, tn->addr_trial_end)) {
|
|
|
|
- self = tn->trial_addr;
|
|
|
|
- tipc_net_finalize(net, self);
|
|
|
|
- msg_set_prevnode(buf_msg(d->skb), self);
|
|
|
|
|
|
+ /* Trial period over ? */
|
|
|
|
+ if (!time_before(jiffies, tn->addr_trial_end)) {
|
|
|
|
+ /* Did we just leave it ? */
|
|
|
|
+ if (!tipc_own_addr(net))
|
|
|
|
+ tipc_net_finalize(net, tn->trial_addr);
|
|
|
|
+
|
|
msg_set_type(buf_msg(d->skb), DSC_REQ_MSG);
|
|
msg_set_type(buf_msg(d->skb), DSC_REQ_MSG);
|
|
|
|
+ msg_set_prevnode(buf_msg(d->skb), tipc_own_addr(net));
|
|
}
|
|
}
|
|
|
|
|
|
/* Adjust timeout interval according to discovery phase */
|
|
/* Adjust timeout interval according to discovery phase */
|