diff options
Diffstat (limited to 'src/transport/gnunet-service-transport_neighbours.c')
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index bbda715a2..19f5fd081 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -2136,13 +2136,18 @@ setup_neighbour (const struct GNUNET_PeerIdentity *peer) | |||
2136 | { | 2136 | { |
2137 | struct NeighbourMapEntry *n; | 2137 | struct NeighbourMapEntry *n; |
2138 | 2138 | ||
2139 | if (0 == | ||
2140 | memcmp (&GST_my_identity, | ||
2141 | peer, | ||
2142 | sizeof (struct GNUNET_PeerIdentity))) | ||
2143 | { | ||
2144 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2145 | "Cowardly refusing to consider myself my neighbour!\n"); | ||
2146 | return NULL; | ||
2147 | } | ||
2139 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2148 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2140 | "Creating new neighbour entry for `%s'\n", | 2149 | "Creating new neighbour entry for `%s'\n", |
2141 | GNUNET_i2s (peer)); | 2150 | GNUNET_i2s (peer)); |
2142 | GNUNET_assert (0 != | ||
2143 | memcmp (&GST_my_identity, | ||
2144 | peer, | ||
2145 | sizeof (struct GNUNET_PeerIdentity))); | ||
2146 | n = GNUNET_new (struct NeighbourMapEntry); | 2151 | n = GNUNET_new (struct NeighbourMapEntry); |
2147 | n->id = *peer; | 2152 | n->id = *peer; |
2148 | n->ack_state = ACK_UNDEFINED; | 2153 | n->ack_state = ACK_UNDEFINED; |
@@ -2250,6 +2255,7 @@ GST_neighbours_handle_session_syn (const struct GNUNET_MessageHeader *message, | |||
2250 | { | 2255 | { |
2251 | /* This is a new neighbour and set to not connected */ | 2256 | /* This is a new neighbour and set to not connected */ |
2252 | n = setup_neighbour (peer); | 2257 | n = setup_neighbour (peer); |
2258 | GNUNET_assert (NULL != n); | ||
2253 | } | 2259 | } |
2254 | 2260 | ||
2255 | /* Remember this SYN message in neighbour */ | 2261 | /* Remember this SYN message in neighbour */ |
@@ -2319,6 +2325,7 @@ GST_neighbours_handle_session_syn (const struct GNUNET_MessageHeader *message, | |||
2319 | /* Get rid of remains and re-try */ | 2325 | /* Get rid of remains and re-try */ |
2320 | free_neighbour (n); | 2326 | free_neighbour (n); |
2321 | n = setup_neighbour (peer); | 2327 | n = setup_neighbour (peer); |
2328 | GNUNET_assert (NULL != n); | ||
2322 | /* Remember the SYN time stamp for ACK message */ | 2329 | /* Remember the SYN time stamp for ACK message */ |
2323 | n->ack_state = ACK_SEND_SYN_ACK; | 2330 | n->ack_state = ACK_SEND_SYN_ACK; |
2324 | n->connect_ack_timestamp = ts; | 2331 | n->connect_ack_timestamp = ts; |
@@ -2496,6 +2503,12 @@ switch_address_bl_check_cont (void *cls, | |||
2496 | if (NULL == (n = lookup_neighbour (peer))) | 2503 | if (NULL == (n = lookup_neighbour (peer))) |
2497 | { | 2504 | { |
2498 | n = setup_neighbour (peer); | 2505 | n = setup_neighbour (peer); |
2506 | if (NULL == n) | ||
2507 | { | ||
2508 | /* not sure how this can happen... */ | ||
2509 | GNUNET_break (0); | ||
2510 | goto cleanup; | ||
2511 | } | ||
2499 | n->state = GNUNET_TRANSPORT_PS_INIT_ATS; | 2512 | n->state = GNUNET_TRANSPORT_PS_INIT_ATS; |
2500 | } | 2513 | } |
2501 | 2514 | ||