diff options
-rw-r--r-- | src/transport/gnunet-service-transport.c | 2 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 61 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.h | 4 |
3 files changed, 23 insertions, 44 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index da4bfbbf0..cbe1f7b19 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -277,7 +277,7 @@ GST_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, | |||
277 | GST_validation_handle_pong (peer, message); | 277 | GST_validation_handle_pong (peer, message); |
278 | break; | 278 | break; |
279 | case GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT: | 279 | case GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT: |
280 | GST_neighbours_handle_connect (message, peer, &address, session, NULL, 0); | 280 | GST_neighbours_handle_connect (message, peer, &address, session); |
281 | break; | 281 | break; |
282 | case GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK: | 282 | case GNUNET_MESSAGE_TYPE_TRANSPORT_SESSION_CONNECT_ACK: |
283 | GST_neighbours_handle_connect_ack (message, peer, &address, session, NULL, 0); | 283 | GST_neighbours_handle_connect_ack (message, peer, &address, session, NULL, 0); |
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index 8c8397ee2..21b5d06d6 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -728,22 +728,11 @@ struct BlackListCheckContext | |||
728 | * Address that is being checked. | 728 | * Address that is being checked. |
729 | */ | 729 | */ |
730 | struct NeighbourAddress na; | 730 | struct NeighbourAddress na; |
731 | |||
732 | /** | ||
733 | * ATS information about the address. | ||
734 | */ | ||
735 | struct GNUNET_ATS_Information *ats; | ||
736 | 731 | ||
737 | /** | 732 | /** |
738 | * Handle to the ongoing blacklist check. | 733 | * Handle to the ongoing blacklist check. |
739 | */ | 734 | */ |
740 | struct GST_BlacklistCheck *bc; | 735 | struct GST_BlacklistCheck *bc; |
741 | |||
742 | /** | ||
743 | * Size of the 'ats' array. | ||
744 | */ | ||
745 | uint32_t ats_count; | ||
746 | |||
747 | }; | 736 | }; |
748 | 737 | ||
749 | 738 | ||
@@ -2005,7 +1994,7 @@ handle_test_blacklist_cont (void *cls, | |||
2005 | GNUNET_ATS_address_add (GST_ats, | 1994 | GNUNET_ATS_address_add (GST_ats, |
2006 | bcc->na.address, | 1995 | bcc->na.address, |
2007 | bcc->na.session, | 1996 | bcc->na.session, |
2008 | bcc->ats, bcc->ats_count); | 1997 | NULL, 0); |
2009 | } | 1998 | } |
2010 | n->state = S_CONNECT_RECV_ATS; | 1999 | n->state = S_CONNECT_RECV_ATS; |
2011 | n->timeout = GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT); | 2000 | n->timeout = GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT); |
@@ -2165,23 +2154,17 @@ static void | |||
2165 | check_blacklist (const struct GNUNET_PeerIdentity *peer, | 2154 | check_blacklist (const struct GNUNET_PeerIdentity *peer, |
2166 | struct GNUNET_TIME_Absolute ts, | 2155 | struct GNUNET_TIME_Absolute ts, |
2167 | const struct GNUNET_HELLO_Address *address, | 2156 | const struct GNUNET_HELLO_Address *address, |
2168 | struct Session *session, | 2157 | struct Session *session) |
2169 | const struct GNUNET_ATS_Information *ats, | ||
2170 | uint32_t ats_count) | ||
2171 | { | 2158 | { |
2172 | struct BlackListCheckContext *bcc; | 2159 | struct BlackListCheckContext *bcc; |
2173 | struct GST_BlacklistCheck *bc; | 2160 | struct GST_BlacklistCheck *bc; |
2174 | 2161 | ||
2175 | bcc = | 2162 | bcc = |
2176 | MEMDEBUG_malloc (sizeof (struct BlackListCheckContext) + | 2163 | MEMDEBUG_malloc (sizeof (struct BlackListCheckContext), __LINE__); |
2177 | sizeof (struct GNUNET_ATS_Information) * ats_count, __LINE__); | ||
2178 | bcc->ats_count = ats_count; | ||
2179 | bcc->na.address = GNUNET_HELLO_address_copy (address); | 2164 | bcc->na.address = GNUNET_HELLO_address_copy (address); |
2180 | MEMDEBUG_add_alloc (bcc->na.address, GNUNET_HELLO_address_get_size (address), __LINE__); | 2165 | MEMDEBUG_add_alloc (bcc->na.address, GNUNET_HELLO_address_get_size (address), __LINE__); |
2181 | bcc->na.session = session; | 2166 | bcc->na.session = session; |
2182 | bcc->na.connect_timestamp = ts; | 2167 | bcc->na.connect_timestamp = ts; |
2183 | bcc->ats = (struct GNUNET_ATS_Information *) &bcc[1]; | ||
2184 | memcpy (bcc->ats, ats, sizeof (struct GNUNET_ATS_Information) * ats_count); | ||
2185 | GNUNET_CONTAINER_DLL_insert (bc_head, | 2168 | GNUNET_CONTAINER_DLL_insert (bc_head, |
2186 | bc_tail, | 2169 | bc_tail, |
2187 | bcc); | 2170 | bcc); |
@@ -2210,9 +2193,7 @@ void | |||
2210 | GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | 2193 | GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, |
2211 | const struct GNUNET_PeerIdentity *peer, | 2194 | const struct GNUNET_PeerIdentity *peer, |
2212 | const struct GNUNET_HELLO_Address *address, | 2195 | const struct GNUNET_HELLO_Address *address, |
2213 | struct Session *session, | 2196 | struct Session *session) |
2214 | const struct GNUNET_ATS_Information *ats, | ||
2215 | uint32_t ats_count) | ||
2216 | { | 2197 | { |
2217 | const struct SessionConnectMessage *scm; | 2198 | const struct SessionConnectMessage *scm; |
2218 | struct NeighbourMapEntry *n; | 2199 | struct NeighbourMapEntry *n; |
@@ -2243,7 +2224,7 @@ GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | |||
2243 | case S_NOT_CONNECTED: | 2224 | case S_NOT_CONNECTED: |
2244 | n->state = S_CONNECT_RECV_BLACKLIST_INBOUND; | 2225 | n->state = S_CONNECT_RECV_BLACKLIST_INBOUND; |
2245 | /* Do a blacklist check for the new address */ | 2226 | /* Do a blacklist check for the new address */ |
2246 | check_blacklist (peer, ts, address, session, ats, ats_count); | 2227 | check_blacklist (peer, ts, address, session); |
2247 | break; | 2228 | break; |
2248 | case S_INIT_ATS: | 2229 | case S_INIT_ATS: |
2249 | /* CONNECT message takes priority over us asking ATS for address */ | 2230 | /* CONNECT message takes priority over us asking ATS for address */ |
@@ -2257,7 +2238,7 @@ GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | |||
2257 | case S_CONNECT_RECV_ACK: | 2238 | case S_CONNECT_RECV_ACK: |
2258 | /* It can never hurt to have an alternative address in the above cases, | 2239 | /* It can never hurt to have an alternative address in the above cases, |
2259 | see if it is allowed */ | 2240 | see if it is allowed */ |
2260 | check_blacklist (peer, ts, address, session, ats, ats_count); | 2241 | check_blacklist (peer, ts, address, session); |
2261 | break; | 2242 | break; |
2262 | case S_CONNECTED: | 2243 | case S_CONNECTED: |
2263 | /* we are already connected and can thus send the ACK immediately; | 2244 | /* we are already connected and can thus send the ACK immediately; |
@@ -2268,14 +2249,14 @@ GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | |||
2268 | n->send_connect_ack = 0; | 2249 | n->send_connect_ack = 0; |
2269 | send_session_connect_ack_message (n->primary_address.address, | 2250 | send_session_connect_ack_message (n->primary_address.address, |
2270 | n->primary_address.session, ts); | 2251 | n->primary_address.session, ts); |
2271 | check_blacklist (peer, ts, address, session, ats, ats_count); | 2252 | check_blacklist (peer, ts, address, session); |
2272 | break; | 2253 | break; |
2273 | case S_RECONNECT_ATS: | 2254 | case S_RECONNECT_ATS: |
2274 | case S_RECONNECT_BLACKLIST: | 2255 | case S_RECONNECT_BLACKLIST: |
2275 | case S_RECONNECT_SENT: | 2256 | case S_RECONNECT_SENT: |
2276 | /* It can never hurt to have an alternative address in the above cases, | 2257 | /* It can never hurt to have an alternative address in the above cases, |
2277 | see if it is allowed */ | 2258 | see if it is allowed */ |
2278 | check_blacklist (peer, ts, address, session, ats, ats_count); | 2259 | check_blacklist (peer, ts, address, session); |
2279 | break; | 2260 | break; |
2280 | case S_CONNECTED_SWITCHING_BLACKLIST: | 2261 | case S_CONNECTED_SWITCHING_BLACKLIST: |
2281 | case S_CONNECTED_SWITCHING_CONNECT_SENT: | 2262 | case S_CONNECTED_SWITCHING_CONNECT_SENT: |
@@ -2287,7 +2268,7 @@ GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | |||
2287 | n->send_connect_ack = 0; | 2268 | n->send_connect_ack = 0; |
2288 | send_session_connect_ack_message (n->primary_address.address, | 2269 | send_session_connect_ack_message (n->primary_address.address, |
2289 | n->primary_address.session, ts); | 2270 | n->primary_address.session, ts); |
2290 | check_blacklist (peer, ts, address, session, ats, ats_count); | 2271 | check_blacklist (peer, ts, address, session); |
2291 | break; | 2272 | break; |
2292 | case S_DISCONNECT: | 2273 | case S_DISCONNECT: |
2293 | /* get rid of remains without terminating sessions, ready to re-try */ | 2274 | /* get rid of remains without terminating sessions, ready to re-try */ |
@@ -2396,7 +2377,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2396 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2377 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2397 | check_blacklist (&n->id, | 2378 | check_blacklist (&n->id, |
2398 | n->connect_ack_timestamp, | 2379 | n->connect_ack_timestamp, |
2399 | address, session, ats, ats_count); | 2380 | address, session); |
2400 | break; | 2381 | break; |
2401 | case S_INIT_BLACKLIST: | 2382 | case S_INIT_BLACKLIST: |
2402 | /* ATS suggests a different address, switch again */ | 2383 | /* ATS suggests a different address, switch again */ |
@@ -2405,7 +2386,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2405 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2386 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2406 | check_blacklist (&n->id, | 2387 | check_blacklist (&n->id, |
2407 | n->connect_ack_timestamp, | 2388 | n->connect_ack_timestamp, |
2408 | address, session, ats, ats_count); | 2389 | address, session); |
2409 | break; | 2390 | break; |
2410 | case S_CONNECT_SENT: | 2391 | case S_CONNECT_SENT: |
2411 | /* ATS suggests a different address, switch again */ | 2392 | /* ATS suggests a different address, switch again */ |
@@ -2415,7 +2396,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2415 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2396 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2416 | check_blacklist (&n->id, | 2397 | check_blacklist (&n->id, |
2417 | n->connect_ack_timestamp, | 2398 | n->connect_ack_timestamp, |
2418 | address, session, ats, ats_count); | 2399 | address, session); |
2419 | break; | 2400 | break; |
2420 | case S_CONNECT_RECV_ATS: | 2401 | case S_CONNECT_RECV_ATS: |
2421 | set_address (&n->primary_address, | 2402 | set_address (&n->primary_address, |
@@ -2424,13 +2405,13 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2424 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2405 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2425 | check_blacklist (&n->id, | 2406 | check_blacklist (&n->id, |
2426 | n->connect_ack_timestamp, | 2407 | n->connect_ack_timestamp, |
2427 | address, session, ats, ats_count); | 2408 | address, session); |
2428 | break; | 2409 | break; |
2429 | case S_CONNECT_RECV_BLACKLIST_INBOUND: | 2410 | case S_CONNECT_RECV_BLACKLIST_INBOUND: |
2430 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2411 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2431 | check_blacklist (&n->id, | 2412 | check_blacklist (&n->id, |
2432 | n->connect_ack_timestamp, | 2413 | n->connect_ack_timestamp, |
2433 | address, session, ats, ats_count); | 2414 | address, session); |
2434 | break; | 2415 | break; |
2435 | case S_CONNECT_RECV_BLACKLIST: | 2416 | case S_CONNECT_RECV_BLACKLIST: |
2436 | case S_CONNECT_RECV_ACK: | 2417 | case S_CONNECT_RECV_ACK: |
@@ -2441,7 +2422,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2441 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2422 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2442 | check_blacklist (&n->id, | 2423 | check_blacklist (&n->id, |
2443 | n->connect_ack_timestamp, | 2424 | n->connect_ack_timestamp, |
2444 | address, session, ats, ats_count); | 2425 | address, session); |
2445 | break; | 2426 | break; |
2446 | case S_CONNECTED: | 2427 | case S_CONNECTED: |
2447 | GNUNET_assert (NULL != n->primary_address.address); | 2428 | GNUNET_assert (NULL != n->primary_address.address); |
@@ -2460,7 +2441,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2460 | n->state = S_CONNECTED_SWITCHING_BLACKLIST; | 2441 | n->state = S_CONNECTED_SWITCHING_BLACKLIST; |
2461 | check_blacklist (&n->id, | 2442 | check_blacklist (&n->id, |
2462 | GNUNET_TIME_absolute_get (), | 2443 | GNUNET_TIME_absolute_get (), |
2463 | address, session, ats, ats_count); | 2444 | address, session); |
2464 | break; | 2445 | break; |
2465 | case S_RECONNECT_ATS: | 2446 | case S_RECONNECT_ATS: |
2466 | set_address (&n->primary_address, | 2447 | set_address (&n->primary_address, |
@@ -2469,7 +2450,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2469 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2450 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2470 | check_blacklist (&n->id, | 2451 | check_blacklist (&n->id, |
2471 | n->connect_ack_timestamp, | 2452 | n->connect_ack_timestamp, |
2472 | address, session, ats, ats_count); | 2453 | address, session); |
2473 | break; | 2454 | break; |
2474 | case S_RECONNECT_BLACKLIST: | 2455 | case S_RECONNECT_BLACKLIST: |
2475 | /* ATS asks us to switch while we were trying to reconnect; switch to new | 2456 | /* ATS asks us to switch while we were trying to reconnect; switch to new |
@@ -2479,7 +2460,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2479 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2460 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2480 | check_blacklist (&n->id, | 2461 | check_blacklist (&n->id, |
2481 | n->connect_ack_timestamp, | 2462 | n->connect_ack_timestamp, |
2482 | address, session, ats, ats_count); | 2463 | address, session); |
2483 | break; | 2464 | break; |
2484 | case S_RECONNECT_SENT: | 2465 | case S_RECONNECT_SENT: |
2485 | /* ATS asks us to switch while we were trying to reconnect; switch to new | 2466 | /* ATS asks us to switch while we were trying to reconnect; switch to new |
@@ -2490,7 +2471,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2490 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); | 2471 | n->timeout = GNUNET_TIME_relative_to_absolute (BLACKLIST_RESPONSE_TIMEOUT); |
2491 | check_blacklist (&n->id, | 2472 | check_blacklist (&n->id, |
2492 | n->connect_ack_timestamp, | 2473 | n->connect_ack_timestamp, |
2493 | address, session, ats, ats_count); | 2474 | address, session); |
2494 | break; | 2475 | break; |
2495 | case S_CONNECTED_SWITCHING_BLACKLIST: | 2476 | case S_CONNECTED_SWITCHING_BLACKLIST: |
2496 | if (n->primary_address.session == session) | 2477 | if (n->primary_address.session == session) |
@@ -2505,7 +2486,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2505 | address, session, bandwidth_in, bandwidth_out, GNUNET_NO); | 2486 | address, session, bandwidth_in, bandwidth_out, GNUNET_NO); |
2506 | check_blacklist (&n->id, | 2487 | check_blacklist (&n->id, |
2507 | GNUNET_TIME_absolute_get (), | 2488 | GNUNET_TIME_absolute_get (), |
2508 | address, session, ats, ats_count); | 2489 | address, session); |
2509 | break; | 2490 | break; |
2510 | case S_CONNECTED_SWITCHING_CONNECT_SENT: | 2491 | case S_CONNECTED_SWITCHING_CONNECT_SENT: |
2511 | if (n->primary_address.session == session) | 2492 | if (n->primary_address.session == session) |
@@ -2521,7 +2502,7 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, | |||
2521 | n->state = S_CONNECTED_SWITCHING_BLACKLIST; | 2502 | n->state = S_CONNECTED_SWITCHING_BLACKLIST; |
2522 | check_blacklist (&n->id, | 2503 | check_blacklist (&n->id, |
2523 | GNUNET_TIME_absolute_get (), | 2504 | GNUNET_TIME_absolute_get (), |
2524 | address, session, ats, ats_count); | 2505 | address, session); |
2525 | break; | 2506 | break; |
2526 | case S_DISCONNECT: | 2507 | case S_DISCONNECT: |
2527 | /* not going to switch addresses while disconnecting */ | 2508 | /* not going to switch addresses while disconnecting */ |
diff --git a/src/transport/gnunet-service-transport_neighbours.h b/src/transport/gnunet-service-transport_neighbours.h index f6e3387bf..bb3d4d2d3 100644 --- a/src/transport/gnunet-service-transport_neighbours.h +++ b/src/transport/gnunet-service-transport_neighbours.h | |||
@@ -251,9 +251,7 @@ void | |||
251 | GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, | 251 | GST_neighbours_handle_connect (const struct GNUNET_MessageHeader *message, |
252 | const struct GNUNET_PeerIdentity *peer, | 252 | const struct GNUNET_PeerIdentity *peer, |
253 | const struct GNUNET_HELLO_Address *address, | 253 | const struct GNUNET_HELLO_Address *address, |
254 | struct Session *session, | 254 | struct Session *session); |
255 | const struct GNUNET_ATS_Information *ats, | ||
256 | uint32_t ats_count); | ||
257 | 255 | ||
258 | 256 | ||
259 | /** | 257 | /** |