--- linux/net/rose/af_rose.c.orig 2006-04-30 11:30:48.000000000 +0200 +++ linux/net/rose/af_rose.c 2006-04-30 11:27:35.000000000 +0200 @@ -753,6 +753,7 @@ rose_insert_socket(sk); /* Finish the bind */ } +rose_try_next_neigh: rose->dest_addr = addr->srose_addr; rose->dest_call = addr->srose_call; rose->rand = ((long)rose & 0xFFFF) + rose->lci; @@ -810,6 +811,11 @@ } if (sk->sk_state != TCP_ESTABLISHED) { + /* Try next neighbour */ + rose->neighbour = rose_get_neigh(&addr->srose_addr, &cause, &diagnostic); + if (rose->neighbour) + goto rose_try_next_neigh; + /* No more neighbour */ sock->state = SS_UNCONNECTED; return sock_error(sk); /* Always set at this point */ }