aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c21
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