diff options
Diffstat (limited to 'src/util/connection.c')
-rw-r--r-- | src/util/connection.c | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/src/util/connection.c b/src/util/connection.c index 79d1c2d4c..f28beb34c 100644 --- a/src/util/connection.c +++ b/src/util/connection.c | |||
@@ -70,7 +70,7 @@ struct GNUNET_CONNECTION_TransmitHandle | |||
70 | /** | 70 | /** |
71 | * Task called on timeout. | 71 | * Task called on timeout. |
72 | */ | 72 | */ |
73 | GNUNET_SCHEDULER_TaskIdentifier timeout_task; | 73 | struct GNUNET_SCHEDULER_Task * timeout_task; |
74 | 74 | ||
75 | /** | 75 | /** |
76 | * At what number of bytes available in the | 76 | * At what number of bytes available in the |
@@ -121,7 +121,7 @@ struct AddressProbe | |||
121 | /** | 121 | /** |
122 | * Task waiting for the connection to finish connecting. | 122 | * Task waiting for the connection to finish connecting. |
123 | */ | 123 | */ |
124 | GNUNET_SCHEDULER_TaskIdentifier task; | 124 | struct GNUNET_SCHEDULER_Task * task; |
125 | }; | 125 | }; |
126 | 126 | ||
127 | 127 | ||
@@ -204,12 +204,12 @@ struct GNUNET_CONNECTION_Handle | |||
204 | /** | 204 | /** |
205 | * Read task that we may need to wait for. | 205 | * Read task that we may need to wait for. |
206 | */ | 206 | */ |
207 | GNUNET_SCHEDULER_TaskIdentifier read_task; | 207 | struct GNUNET_SCHEDULER_Task * read_task; |
208 | 208 | ||
209 | /** | 209 | /** |
210 | * Write task that we may need to wait for. | 210 | * Write task that we may need to wait for. |
211 | */ | 211 | */ |
212 | GNUNET_SCHEDULER_TaskIdentifier write_task; | 212 | struct GNUNET_SCHEDULER_Task * write_task; |
213 | 213 | ||
214 | /** | 214 | /** |
215 | * Handle to a pending DNS lookup request. | 215 | * Handle to a pending DNS lookup request. |
@@ -522,13 +522,13 @@ signal_transmit_error (struct GNUNET_CONNECTION_Handle *connection, | |||
522 | GNUNET_NETWORK_socket_shutdown (connection->sock, SHUT_RDWR); | 522 | GNUNET_NETWORK_socket_shutdown (connection->sock, SHUT_RDWR); |
523 | GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (connection->sock)); | 523 | GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (connection->sock)); |
524 | connection->sock = NULL; | 524 | connection->sock = NULL; |
525 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->write_task); | 525 | GNUNET_assert (NULL == connection->write_task); |
526 | } | 526 | } |
527 | if (GNUNET_SCHEDULER_NO_TASK != connection->read_task) | 527 | if (NULL != connection->read_task) |
528 | { | 528 | { |
529 | /* send errors trigger read errors... */ | 529 | /* send errors trigger read errors... */ |
530 | GNUNET_SCHEDULER_cancel (connection->read_task); | 530 | GNUNET_SCHEDULER_cancel (connection->read_task); |
531 | connection->read_task = GNUNET_SCHEDULER_NO_TASK; | 531 | connection->read_task = NULL; |
532 | signal_receive_timeout (connection); | 532 | signal_receive_timeout (connection); |
533 | return; | 533 | return; |
534 | } | 534 | } |
@@ -556,7 +556,7 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *connection) | |||
556 | GNUNET_break (NULL == connection->ap_tail); | 556 | GNUNET_break (NULL == connection->ap_tail); |
557 | GNUNET_break (GNUNET_NO == connection->dns_active); | 557 | GNUNET_break (GNUNET_NO == connection->dns_active); |
558 | GNUNET_break (NULL == connection->sock); | 558 | GNUNET_break (NULL == connection->sock); |
559 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->write_task); | 559 | GNUNET_assert (NULL == connection->write_task); |
560 | 560 | ||
561 | /* signal errors for jobs that used to wait on the connection */ | 561 | /* signal errors for jobs that used to wait on the connection */ |
562 | connection->destroy_later = 1; | 562 | connection->destroy_later = 1; |
@@ -564,9 +564,9 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *connection) | |||
564 | signal_receive_error (connection, ECONNREFUSED); | 564 | signal_receive_error (connection, ECONNREFUSED); |
565 | if (NULL != connection->nth.notify_ready) | 565 | if (NULL != connection->nth.notify_ready) |
566 | { | 566 | { |
567 | GNUNET_assert (connection->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK); | 567 | GNUNET_assert (connection->nth.timeout_task != NULL); |
568 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); | 568 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); |
569 | connection->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; | 569 | connection->nth.timeout_task = NULL; |
570 | signal_transmit_error (connection, ECONNREFUSED); | 570 | signal_transmit_error (connection, ECONNREFUSED); |
571 | } | 571 | } |
572 | if (-1 == connection->destroy_later) | 572 | if (-1 == connection->destroy_later) |
@@ -618,7 +618,7 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *connection) | |||
618 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 618 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
619 | "Connection succeeded, starting with receiving data (%p)\n", | 619 | "Connection succeeded, starting with receiving data (%p)\n", |
620 | connection); | 620 | connection); |
621 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->read_task); | 621 | GNUNET_assert (NULL == connection->read_task); |
622 | connection->read_task = | 622 | connection->read_task = |
623 | GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_absolute_get_remaining | 623 | GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_absolute_get_remaining |
624 | (connection->receive_timeout), connection->sock, | 624 | (connection->receive_timeout), connection->sock, |
@@ -629,10 +629,10 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *connection) | |||
629 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 629 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
630 | "Connection succeeded, starting with sending data (%p)\n", | 630 | "Connection succeeded, starting with sending data (%p)\n", |
631 | connection); | 631 | connection); |
632 | GNUNET_assert (connection->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK); | 632 | GNUNET_assert (connection->nth.timeout_task != NULL); |
633 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); | 633 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); |
634 | connection->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; | 634 | connection->nth.timeout_task = NULL; |
635 | GNUNET_assert (connection->write_task == GNUNET_SCHEDULER_NO_TASK); | 635 | GNUNET_assert (connection->write_task == NULL); |
636 | connection->write_task = | 636 | connection->write_task = |
637 | GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining | 637 | GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining |
638 | (connection->nth.transmit_timeout), connection->sock, | 638 | (connection->nth.transmit_timeout), connection->sock, |
@@ -982,21 +982,21 @@ GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *connection) | |||
982 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Shutting down connection (%p)\n", connection); | 982 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Shutting down connection (%p)\n", connection); |
983 | GNUNET_assert (NULL == connection->nth.notify_ready); | 983 | GNUNET_assert (NULL == connection->nth.notify_ready); |
984 | GNUNET_assert (NULL == connection->receiver); | 984 | GNUNET_assert (NULL == connection->receiver); |
985 | if (GNUNET_SCHEDULER_NO_TASK != connection->write_task) | 985 | if (NULL != connection->write_task) |
986 | { | 986 | { |
987 | GNUNET_SCHEDULER_cancel (connection->write_task); | 987 | GNUNET_SCHEDULER_cancel (connection->write_task); |
988 | connection->write_task = GNUNET_SCHEDULER_NO_TASK; | 988 | connection->write_task = NULL; |
989 | connection->write_buffer_off = 0; | 989 | connection->write_buffer_off = 0; |
990 | } | 990 | } |
991 | if (GNUNET_SCHEDULER_NO_TASK != connection->read_task) | 991 | if (NULL != connection->read_task) |
992 | { | 992 | { |
993 | GNUNET_SCHEDULER_cancel (connection->read_task); | 993 | GNUNET_SCHEDULER_cancel (connection->read_task); |
994 | connection->read_task = GNUNET_SCHEDULER_NO_TASK; | 994 | connection->read_task = NULL; |
995 | } | 995 | } |
996 | if (GNUNET_SCHEDULER_NO_TASK != connection->nth.timeout_task) | 996 | if (NULL != connection->nth.timeout_task) |
997 | { | 997 | { |
998 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); | 998 | GNUNET_SCHEDULER_cancel (connection->nth.timeout_task); |
999 | connection->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; | 999 | connection->nth.timeout_task = NULL; |
1000 | } | 1000 | } |
1001 | connection->nth.notify_ready = NULL; | 1001 | connection->nth.notify_ready = NULL; |
1002 | if (NULL != connection->dns_active) | 1002 | if (NULL != connection->dns_active) |
@@ -1051,7 +1051,7 @@ receive_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1051 | ssize_t ret; | 1051 | ssize_t ret; |
1052 | GNUNET_CONNECTION_Receiver receiver; | 1052 | GNUNET_CONNECTION_Receiver receiver; |
1053 | 1053 | ||
1054 | connection->read_task = GNUNET_SCHEDULER_NO_TASK; | 1054 | connection->read_task = NULL; |
1055 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 1055 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) |
1056 | { | 1056 | { |
1057 | /* ignore shutdown request, go again immediately */ | 1057 | /* ignore shutdown request, go again immediately */ |
@@ -1115,7 +1115,7 @@ GNUNET_CONNECTION_receive (struct GNUNET_CONNECTION_Handle *connection, size_t m | |||
1115 | GNUNET_CONNECTION_Receiver receiver, | 1115 | GNUNET_CONNECTION_Receiver receiver, |
1116 | void *receiver_cls) | 1116 | void *receiver_cls) |
1117 | { | 1117 | { |
1118 | GNUNET_assert ((GNUNET_SCHEDULER_NO_TASK == connection->read_task) && | 1118 | GNUNET_assert ((NULL == connection->read_task) && |
1119 | (NULL == connection->receiver)); | 1119 | (NULL == connection->receiver)); |
1120 | GNUNET_assert (NULL != receiver); | 1120 | GNUNET_assert (NULL != receiver); |
1121 | connection->receiver = receiver; | 1121 | connection->receiver = receiver; |
@@ -1150,10 +1150,10 @@ GNUNET_CONNECTION_receive (struct GNUNET_CONNECTION_Handle *connection, size_t m | |||
1150 | void * | 1150 | void * |
1151 | GNUNET_CONNECTION_receive_cancel (struct GNUNET_CONNECTION_Handle *connection) | 1151 | GNUNET_CONNECTION_receive_cancel (struct GNUNET_CONNECTION_Handle *connection) |
1152 | { | 1152 | { |
1153 | if (GNUNET_SCHEDULER_NO_TASK != connection->read_task) | 1153 | if (NULL != connection->read_task) |
1154 | { | 1154 | { |
1155 | GNUNET_assert (connection == GNUNET_SCHEDULER_cancel (connection->read_task)); | 1155 | GNUNET_assert (connection == GNUNET_SCHEDULER_cancel (connection->read_task)); |
1156 | connection->read_task = GNUNET_SCHEDULER_NO_TASK; | 1156 | connection->read_task = NULL; |
1157 | } | 1157 | } |
1158 | connection->receiver = NULL; | 1158 | connection->receiver = NULL; |
1159 | return connection->receiver_cls; | 1159 | return connection->receiver_cls; |
@@ -1177,7 +1177,7 @@ process_notify (struct GNUNET_CONNECTION_Handle *connection) | |||
1177 | 1177 | ||
1178 | LOG (GNUNET_ERROR_TYPE_DEBUG, "process_notify is running\n"); | 1178 | LOG (GNUNET_ERROR_TYPE_DEBUG, "process_notify is running\n"); |
1179 | 1179 | ||
1180 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->write_task); | 1180 | GNUNET_assert (NULL == connection->write_task); |
1181 | if (NULL == (notify = connection->nth.notify_ready)) | 1181 | if (NULL == (notify = connection->nth.notify_ready)) |
1182 | { | 1182 | { |
1183 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Noone to notify\n"); | 1183 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Noone to notify\n"); |
@@ -1229,7 +1229,7 @@ transmit_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1229 | struct GNUNET_CONNECTION_Handle *connection = cls; | 1229 | struct GNUNET_CONNECTION_Handle *connection = cls; |
1230 | GNUNET_CONNECTION_TransmitReadyNotify notify; | 1230 | GNUNET_CONNECTION_TransmitReadyNotify notify; |
1231 | 1231 | ||
1232 | connection->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; | 1232 | connection->nth.timeout_task = NULL; |
1233 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1233 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1234 | "Transmit to `%s:%u/%s' fails, time out reached (%p).\n", | 1234 | "Transmit to `%s:%u/%s' fails, time out reached (%p).\n", |
1235 | connection->hostname, | 1235 | connection->hostname, |
@@ -1259,7 +1259,7 @@ connect_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1259 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1259 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1260 | "Transmission request of size %u fails (%s/%u), connection failed (%p).\n", | 1260 | "Transmission request of size %u fails (%s/%u), connection failed (%p).\n", |
1261 | connection->nth.notify_size, connection->hostname, connection->port, connection); | 1261 | connection->nth.notify_size, connection->hostname, connection->port, connection); |
1262 | connection->write_task = GNUNET_SCHEDULER_NO_TASK; | 1262 | connection->write_task = NULL; |
1263 | notify = connection->nth.notify_ready; | 1263 | notify = connection->nth.notify_ready; |
1264 | connection->nth.notify_ready = NULL; | 1264 | connection->nth.notify_ready = NULL; |
1265 | notify (connection->nth.notify_ready_cls, 0, NULL); | 1265 | notify (connection->nth.notify_ready_cls, 0, NULL); |
@@ -1281,9 +1281,9 @@ transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1281 | size_t have; | 1281 | size_t have; |
1282 | 1282 | ||
1283 | LOG (GNUNET_ERROR_TYPE_DEBUG, "transmit_ready running (%p).\n", connection); | 1283 | LOG (GNUNET_ERROR_TYPE_DEBUG, "transmit_ready running (%p).\n", connection); |
1284 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK != connection->write_task); | 1284 | GNUNET_assert (NULL != connection->write_task); |
1285 | connection->write_task = GNUNET_SCHEDULER_NO_TASK; | 1285 | connection->write_task = NULL; |
1286 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->nth.timeout_task); | 1286 | GNUNET_assert (NULL == connection->nth.timeout_task); |
1287 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 1287 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) |
1288 | { | 1288 | { |
1289 | if (NULL != connection->sock) | 1289 | if (NULL != connection->sock) |
@@ -1320,7 +1320,7 @@ transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1320 | } | 1320 | } |
1321 | if (!GNUNET_NETWORK_fdset_isset (tc->write_ready, connection->sock)) | 1321 | if (!GNUNET_NETWORK_fdset_isset (tc->write_ready, connection->sock)) |
1322 | { | 1322 | { |
1323 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->write_task); | 1323 | GNUNET_assert (NULL == connection->write_task); |
1324 | /* special circumstances (in particular, shutdown): not yet ready | 1324 | /* special circumstances (in particular, shutdown): not yet ready |
1325 | * to write, but no "fatal" error either. Hence retry. */ | 1325 | * to write, but no "fatal" error either. Hence retry. */ |
1326 | goto SCHEDULE_WRITE; | 1326 | goto SCHEDULE_WRITE; |
@@ -1352,10 +1352,10 @@ RETRY: | |||
1352 | { | 1352 | { |
1353 | if (EINTR == errno) | 1353 | if (EINTR == errno) |
1354 | goto RETRY; | 1354 | goto RETRY; |
1355 | if (GNUNET_SCHEDULER_NO_TASK != connection->write_task) | 1355 | if (NULL != connection->write_task) |
1356 | { | 1356 | { |
1357 | GNUNET_SCHEDULER_cancel (connection->write_task); | 1357 | GNUNET_SCHEDULER_cancel (connection->write_task); |
1358 | connection->write_task = GNUNET_SCHEDULER_NO_TASK; | 1358 | connection->write_task = NULL; |
1359 | } | 1359 | } |
1360 | signal_transmit_error (connection, errno); | 1360 | signal_transmit_error (connection, errno); |
1361 | return; | 1361 | return; |
@@ -1378,7 +1378,7 @@ SCHEDULE_WRITE: | |||
1378 | "Re-scheduling transmit_ready (more to do) (%p).\n", connection); | 1378 | "Re-scheduling transmit_ready (more to do) (%p).\n", connection); |
1379 | have = connection->write_buffer_off - connection->write_buffer_pos; | 1379 | have = connection->write_buffer_off - connection->write_buffer_pos; |
1380 | GNUNET_assert ((NULL != connection->nth.notify_ready) || (have > 0)); | 1380 | GNUNET_assert ((NULL != connection->nth.notify_ready) || (have > 0)); |
1381 | if (GNUNET_SCHEDULER_NO_TASK == connection->write_task) | 1381 | if (NULL == connection->write_task) |
1382 | connection->write_task = | 1382 | connection->write_task = |
1383 | GNUNET_SCHEDULER_add_write_net ((connection->nth.notify_ready == | 1383 | GNUNET_SCHEDULER_add_write_net ((connection->nth.notify_ready == |
1384 | NULL) ? GNUNET_TIME_UNIT_FOREVER_REL : | 1384 | NULL) ? GNUNET_TIME_UNIT_FOREVER_REL : |
@@ -1424,17 +1424,17 @@ GNUNET_CONNECTION_notify_transmit_ready (struct GNUNET_CONNECTION_Handle *connec | |||
1424 | connection->nth.connection = connection; | 1424 | connection->nth.connection = connection; |
1425 | connection->nth.notify_size = size; | 1425 | connection->nth.notify_size = size; |
1426 | connection->nth.transmit_timeout = GNUNET_TIME_relative_to_absolute (timeout); | 1426 | connection->nth.transmit_timeout = GNUNET_TIME_relative_to_absolute (timeout); |
1427 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == connection->nth.timeout_task); | 1427 | GNUNET_assert (NULL == connection->nth.timeout_task); |
1428 | if ((NULL == connection->sock) && | 1428 | if ((NULL == connection->sock) && |
1429 | (NULL == connection->ap_head) && | 1429 | (NULL == connection->ap_head) && |
1430 | (NULL == connection->dns_active)) | 1430 | (NULL == connection->dns_active)) |
1431 | { | 1431 | { |
1432 | if (GNUNET_SCHEDULER_NO_TASK != connection->write_task) | 1432 | if (NULL != connection->write_task) |
1433 | GNUNET_SCHEDULER_cancel (connection->write_task); | 1433 | GNUNET_SCHEDULER_cancel (connection->write_task); |
1434 | connection->write_task = GNUNET_SCHEDULER_add_now (&connect_error, connection); | 1434 | connection->write_task = GNUNET_SCHEDULER_add_now (&connect_error, connection); |
1435 | return &connection->nth; | 1435 | return &connection->nth; |
1436 | } | 1436 | } |
1437 | if (GNUNET_SCHEDULER_NO_TASK != connection->write_task) | 1437 | if (NULL != connection->write_task) |
1438 | return &connection->nth; /* previous transmission still in progress */ | 1438 | return &connection->nth; /* previous transmission still in progress */ |
1439 | if (NULL != connection->sock) | 1439 | if (NULL != connection->sock) |
1440 | { | 1440 | { |
@@ -1467,15 +1467,15 @@ GNUNET_CONNECTION_notify_transmit_ready_cancel (struct | |||
1467 | { | 1467 | { |
1468 | GNUNET_assert (NULL != th->notify_ready); | 1468 | GNUNET_assert (NULL != th->notify_ready); |
1469 | th->notify_ready = NULL; | 1469 | th->notify_ready = NULL; |
1470 | if (GNUNET_SCHEDULER_NO_TASK != th->timeout_task) | 1470 | if (NULL != th->timeout_task) |
1471 | { | 1471 | { |
1472 | GNUNET_SCHEDULER_cancel (th->timeout_task); | 1472 | GNUNET_SCHEDULER_cancel (th->timeout_task); |
1473 | th->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 1473 | th->timeout_task = NULL; |
1474 | } | 1474 | } |
1475 | if (GNUNET_SCHEDULER_NO_TASK != th->connection->write_task) | 1475 | if (NULL != th->connection->write_task) |
1476 | { | 1476 | { |
1477 | GNUNET_SCHEDULER_cancel (th->connection->write_task); | 1477 | GNUNET_SCHEDULER_cancel (th->connection->write_task); |
1478 | th->connection->write_task = GNUNET_SCHEDULER_NO_TASK; | 1478 | th->connection->write_task = NULL; |
1479 | } | 1479 | } |
1480 | } | 1480 | } |
1481 | 1481 | ||