aboutsummaryrefslogtreecommitdiff
path: root/src/util/connection.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2010-11-05 18:21:50 +0000
committerNathan S. Evans <evans@in.tum.de>2010-11-05 18:21:50 +0000
commit75a33a1499cf60ea4364c9aa673816629a6c1413 (patch)
tree0620da4312bb04de4d7b65074fdd3b0c3dd6cc0e /src/util/connection.c
parent7217c601ad30760872823193d62307e7a335d226 (diff)
downloadgnunet-75a33a1499cf60ea4364c9aa673816629a6c1413.tar.gz
gnunet-75a33a1499cf60ea4364c9aa673816629a6c1413.zip
big scheduler refactoring, expect some issues
Diffstat (limited to 'src/util/connection.c')
-rw-r--r--src/util/connection.c112
1 files changed, 35 insertions, 77 deletions
diff --git a/src/util/connection.c b/src/util/connection.c
index 04d0c864d..a25dc0350 100644
--- a/src/util/connection.c
+++ b/src/util/connection.c
@@ -161,11 +161,6 @@ struct GNUNET_CONNECTION_Handle
161{ 161{
162 162
163 /** 163 /**
164 * Scheduler that was used for the connect task.
165 */
166 struct GNUNET_SCHEDULER_Handle *sched;
167
168 /**
169 * Configuration to use. 164 * Configuration to use.
170 */ 165 */
171 const struct GNUNET_CONFIGURATION_Handle *cfg; 166 const struct GNUNET_CONFIGURATION_Handle *cfg;
@@ -312,14 +307,11 @@ void GNUNET_CONNECTION_persist_(struct GNUNET_CONNECTION_Handle *sock)
312 * socket should henceforth be no longer used directly. 307 * socket should henceforth be no longer used directly.
313 * GNUNET_socket_destroy will close it. 308 * GNUNET_socket_destroy will close it.
314 * 309 *
315 * @param sched scheduler to use
316 * @param osSocket existing socket to box 310 * @param osSocket existing socket to box
317 * @return the boxed socket handle 311 * @return the boxed socket handle
318 */ 312 */
319struct GNUNET_CONNECTION_Handle * 313struct GNUNET_CONNECTION_Handle *
320GNUNET_CONNECTION_create_from_existing (struct GNUNET_SCHEDULER_Handle 314GNUNET_CONNECTION_create_from_existing (struct GNUNET_NETWORK_Handle
321 *sched,
322 struct GNUNET_NETWORK_Handle
323 *osSocket) 315 *osSocket)
324{ 316{
325 struct GNUNET_CONNECTION_Handle *ret; 317 struct GNUNET_CONNECTION_Handle *ret;
@@ -327,7 +319,6 @@ GNUNET_CONNECTION_create_from_existing (struct GNUNET_SCHEDULER_Handle
327 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE; 319 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE;
328 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size); 320 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size);
329 ret->sock = osSocket; 321 ret->sock = osSocket;
330 ret->sched = sched;
331 return ret; 322 return ret;
332} 323}
333 324
@@ -336,16 +327,13 @@ GNUNET_CONNECTION_create_from_existing (struct GNUNET_SCHEDULER_Handle
336 * Create a socket handle by accepting on a listen socket. This 327 * Create a socket handle by accepting on a listen socket. This
337 * function may block if the listen socket has no connection ready. 328 * function may block if the listen socket has no connection ready.
338 * 329 *
339 * @param sched scheduler to use
340 * @param access function to use to check if access is allowed 330 * @param access function to use to check if access is allowed
341 * @param access_cls closure for access 331 * @param access_cls closure for access
342 * @param lsock listen socket 332 * @param lsock listen socket
343 * @return the socket handle, NULL on error 333 * @return the socket handle, NULL on error
344 */ 334 */
345struct GNUNET_CONNECTION_Handle * 335struct GNUNET_CONNECTION_Handle *
346GNUNET_CONNECTION_create_from_accept (struct GNUNET_SCHEDULER_Handle 336GNUNET_CONNECTION_create_from_accept (GNUNET_CONNECTION_AccessCheck access,
347 *sched,
348 GNUNET_CONNECTION_AccessCheck access,
349 void *access_cls, 337 void *access_cls,
350 struct GNUNET_NETWORK_Handle *lsock) 338 struct GNUNET_NETWORK_Handle *lsock)
351{ 339{
@@ -416,7 +404,6 @@ GNUNET_CONNECTION_create_from_accept (struct GNUNET_SCHEDULER_Handle
416 ret->addr = uaddr; 404 ret->addr = uaddr;
417 ret->addrlen = addrlen; 405 ret->addrlen = addrlen;
418 ret->sock = sock; 406 ret->sock = sock;
419 ret->sched = sched;
420#if DEBUG_CONNECTION 407#if DEBUG_CONNECTION
421 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 408 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
422 _("Accepting connection from `%s': %p\n"), 409 _("Accepting connection from `%s': %p\n"),
@@ -494,8 +481,7 @@ destroy_continuation (void *cls,
494#endif 481#endif
495 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task); 482 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
496 sock->destroy_task 483 sock->destroy_task
497 = GNUNET_SCHEDULER_add_after (sock->sched, 484 = GNUNET_SCHEDULER_add_after (sock->write_task,
498 sock->write_task,
499 &destroy_continuation, sock); 485 &destroy_continuation, sock);
500 return; 486 return;
501 } 487 }
@@ -517,8 +503,7 @@ destroy_continuation (void *cls,
517 { 503 {
518 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task); 504 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
519 sock->destroy_task 505 sock->destroy_task
520 = GNUNET_SCHEDULER_add_after (sock->sched, 506 = GNUNET_SCHEDULER_add_after (sock->read_task,
521 sock->read_task,
522 &destroy_continuation, sock); 507 &destroy_continuation, sock);
523 return; 508 return;
524 } 509 }
@@ -529,7 +514,7 @@ destroy_continuation (void *cls,
529 while (NULL != (pos = sock->ap_head)) 514 while (NULL != (pos = sock->ap_head))
530 { 515 {
531 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (pos->sock)); 516 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (pos->sock));
532 GNUNET_SCHEDULER_cancel (sock->sched, pos->task); 517 GNUNET_SCHEDULER_cancel (pos->task);
533 GNUNET_CONTAINER_DLL_remove (sock->ap_head, sock->ap_tail, pos); 518 GNUNET_CONTAINER_DLL_remove (sock->ap_head, sock->ap_tail, pos);
534 GNUNET_free (pos); 519 GNUNET_free (pos);
535 } 520 }
@@ -606,8 +591,7 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *h)
606 h); 591 h);
607#endif 592#endif
608 h->ccs -= COCO_RECEIVE_AGAIN; 593 h->ccs -= COCO_RECEIVE_AGAIN;
609 h->read_task = GNUNET_SCHEDULER_add_after (h->sched, 594 h->read_task = GNUNET_SCHEDULER_add_after (GNUNET_SCHEDULER_NO_TASK,
610 GNUNET_SCHEDULER_NO_TASK,
611 &receive_again, h); 595 &receive_again, h);
612 } 596 }
613 if (0 != (h->ccs & COCO_TRANSMIT_READY)) 597 if (0 != (h->ccs & COCO_TRANSMIT_READY))
@@ -618,12 +602,11 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *h)
618 h); 602 h);
619#endif 603#endif
620 GNUNET_assert (h->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK); 604 GNUNET_assert (h->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK);
621 GNUNET_SCHEDULER_cancel (h->sched, h->nth.timeout_task); 605 GNUNET_SCHEDULER_cancel (h->nth.timeout_task);
622 h->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; 606 h->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK;
623 h->ccs -= COCO_TRANSMIT_READY; 607 h->ccs -= COCO_TRANSMIT_READY;
624 GNUNET_assert (h->write_task == GNUNET_SCHEDULER_NO_TASK); 608 GNUNET_assert (h->write_task == GNUNET_SCHEDULER_NO_TASK);
625 h->write_task = GNUNET_SCHEDULER_add_after (h->sched, 609 h->write_task = GNUNET_SCHEDULER_add_after (GNUNET_SCHEDULER_NO_TASK,
626 GNUNET_SCHEDULER_NO_TASK,
627 &transmit_ready, h); 610 &transmit_ready, h);
628 } 611 }
629 if (0 != (h->ccs & COCO_DESTROY_CONTINUATION)) 612 if (0 != (h->ccs & COCO_DESTROY_CONTINUATION))
@@ -636,8 +619,7 @@ connect_fail_continuation (struct GNUNET_CONNECTION_Handle *h)
636 h->ccs -= COCO_DESTROY_CONTINUATION; 619 h->ccs -= COCO_DESTROY_CONTINUATION;
637 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task); 620 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task);
638 h->destroy_task 621 h->destroy_task
639 = GNUNET_SCHEDULER_add_now (h->sched, 622 = GNUNET_SCHEDULER_add_now (&destroy_continuation,
640 &destroy_continuation,
641 h); 623 h);
642 } 624 }
643} 625}
@@ -665,8 +647,7 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *h)
665 h); 647 h);
666#endif 648#endif
667 h->ccs -= COCO_RECEIVE_AGAIN; 649 h->ccs -= COCO_RECEIVE_AGAIN;
668 h->read_task = GNUNET_SCHEDULER_add_after (h->sched, 650 h->read_task = GNUNET_SCHEDULER_add_after (GNUNET_SCHEDULER_NO_TASK,
669 GNUNET_SCHEDULER_NO_TASK,
670 &receive_again, h); 651 &receive_again, h);
671 } 652 }
672 if (0 != (h->ccs & COCO_TRANSMIT_READY)) 653 if (0 != (h->ccs & COCO_TRANSMIT_READY))
@@ -677,13 +658,12 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *h)
677 h); 658 h);
678#endif 659#endif
679 GNUNET_assert (h->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK); 660 GNUNET_assert (h->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK);
680 GNUNET_SCHEDULER_cancel (h->sched, h->nth.timeout_task); 661 GNUNET_SCHEDULER_cancel (h->nth.timeout_task);
681 h->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK; 662 h->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK;
682 h->ccs -= COCO_TRANSMIT_READY; 663 h->ccs -= COCO_TRANSMIT_READY;
683 GNUNET_assert (h->write_task == GNUNET_SCHEDULER_NO_TASK); 664 GNUNET_assert (h->write_task == GNUNET_SCHEDULER_NO_TASK);
684 h->write_task = 665 h->write_task =
685 GNUNET_SCHEDULER_add_write_net (h->sched, 666 GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining
686 GNUNET_TIME_absolute_get_remaining
687 (h->nth.transmit_timeout), h->sock, 667 (h->nth.transmit_timeout), h->sock,
688 &transmit_ready, h); 668 &transmit_ready, h);
689 } 669 }
@@ -697,9 +677,8 @@ connect_success_continuation (struct GNUNET_CONNECTION_Handle *h)
697 h->ccs -= COCO_DESTROY_CONTINUATION; 677 h->ccs -= COCO_DESTROY_CONTINUATION;
698 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task); 678 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == h->destroy_task);
699 h->destroy_task 679 h->destroy_task
700 = GNUNET_SCHEDULER_add_now (h->sched, 680 = GNUNET_SCHEDULER_add_now (&destroy_continuation,
701 &destroy_continuation, 681 h);
702 h);
703 } 682 }
704} 683}
705 684
@@ -749,7 +728,7 @@ connect_probe_continuation (void *cls,
749 while (NULL != (pos = h->ap_head)) 728 while (NULL != (pos = h->ap_head))
750 { 729 {
751 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (pos->sock)); 730 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (pos->sock));
752 GNUNET_SCHEDULER_cancel (h->sched, pos->task); 731 GNUNET_SCHEDULER_cancel (pos->task);
753 GNUNET_CONTAINER_DLL_remove (h->ap_head, h->ap_tail, pos); 732 GNUNET_CONTAINER_DLL_remove (h->ap_head, h->ap_tail, pos);
754 GNUNET_free (pos); 733 GNUNET_free (pos);
755 } 734 }
@@ -842,7 +821,7 @@ try_connect_using_address (void *cls,
842 GNUNET_TIME_absolute_get_remaining 821 GNUNET_TIME_absolute_get_remaining
843 (h->receive_timeout)); 822 (h->receive_timeout));
844 ap->task = 823 ap->task =
845 GNUNET_SCHEDULER_add_write_net (h->sched, delay, ap->sock, 824 GNUNET_SCHEDULER_add_write_net (delay, ap->sock,
846 &connect_probe_continuation, ap); 825 &connect_probe_continuation, ap);
847} 826}
848 827
@@ -852,15 +831,13 @@ try_connect_using_address (void *cls,
852 * This function returns immediately, even if the connection has not 831 * This function returns immediately, even if the connection has not
853 * yet been established. This function only creates TCP connections. 832 * yet been established. This function only creates TCP connections.
854 * 833 *
855 * @param sched scheduler to use
856 * @param cfg configuration to use 834 * @param cfg configuration to use
857 * @param hostname name of the host to connect to 835 * @param hostname name of the host to connect to
858 * @param port port to connect to 836 * @param port port to connect to
859 * @return the socket handle 837 * @return the socket handle
860 */ 838 */
861struct GNUNET_CONNECTION_Handle * 839struct GNUNET_CONNECTION_Handle *
862GNUNET_CONNECTION_create_from_connect (struct GNUNET_SCHEDULER_Handle *sched, 840GNUNET_CONNECTION_create_from_connect (const struct
863 const struct
864 GNUNET_CONFIGURATION_Handle *cfg, 841 GNUNET_CONFIGURATION_Handle *cfg,
865 const char *hostname, uint16_t port) 842 const char *hostname, uint16_t port)
866{ 843{
@@ -869,13 +846,11 @@ GNUNET_CONNECTION_create_from_connect (struct GNUNET_SCHEDULER_Handle *sched,
869 GNUNET_assert (0 < strlen (hostname)); /* sanity check */ 846 GNUNET_assert (0 < strlen (hostname)); /* sanity check */
870 ret = GNUNET_malloc (sizeof (struct GNUNET_CONNECTION_Handle)); 847 ret = GNUNET_malloc (sizeof (struct GNUNET_CONNECTION_Handle));
871 ret->cfg = cfg; 848 ret->cfg = cfg;
872 ret->sched = sched;
873 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE; 849 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE;
874 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size); 850 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size);
875 ret->port = port; 851 ret->port = port;
876 ret->hostname = GNUNET_strdup (hostname); 852 ret->hostname = GNUNET_strdup (hostname);
877 ret->dns_active = GNUNET_RESOLVER_ip_get (sched, 853 ret->dns_active = GNUNET_RESOLVER_ip_get (cfg,
878 cfg,
879 ret->hostname, 854 ret->hostname,
880 AF_UNSPEC, 855 AF_UNSPEC,
881 GNUNET_CONNECTION_CONNECT_RETRY_TIMEOUT, 856 GNUNET_CONNECTION_CONNECT_RETRY_TIMEOUT,
@@ -889,14 +864,12 @@ GNUNET_CONNECTION_create_from_connect (struct GNUNET_SCHEDULER_Handle *sched,
889 * This function returns immediately, even if the connection has not 864 * This function returns immediately, even if the connection has not
890 * yet been established. This function only creates UNIX connections. 865 * yet been established. This function only creates UNIX connections.
891 * 866 *
892 * @param sched scheduler to use
893 * @param cfg configuration to use 867 * @param cfg configuration to use
894 * @param unixpath path to connect to 868 * @param unixpath path to connect to
895 * @return the socket handle, NULL on systems without UNIX support 869 * @return the socket handle, NULL on systems without UNIX support
896 */ 870 */
897struct GNUNET_CONNECTION_Handle * 871struct GNUNET_CONNECTION_Handle *
898GNUNET_CONNECTION_create_from_connect_to_unixpath (struct GNUNET_SCHEDULER_Handle *sched, 872GNUNET_CONNECTION_create_from_connect_to_unixpath (const struct
899 const struct
900 GNUNET_CONFIGURATION_Handle *cfg, 873 GNUNET_CONFIGURATION_Handle *cfg,
901 const char *unixpath) 874 const char *unixpath)
902{ 875{
@@ -922,7 +895,6 @@ GNUNET_CONNECTION_create_from_connect_to_unixpath (struct GNUNET_SCHEDULER_Handl
922#endif 895#endif
923 ret = GNUNET_malloc (sizeof (struct GNUNET_CONNECTION_Handle)); 896 ret = GNUNET_malloc (sizeof (struct GNUNET_CONNECTION_Handle));
924 ret->cfg = cfg; 897 ret->cfg = cfg;
925 ret->sched = sched;
926 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE; 898 ret->write_buffer_size = GNUNET_SERVER_MIN_BUFFER_SIZE;
927 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size); 899 ret->write_buffer = GNUNET_malloc(ret->write_buffer_size);
928 ret->port = 0; 900 ret->port = 0;
@@ -960,15 +932,13 @@ GNUNET_CONNECTION_create_from_connect_to_unixpath (struct GNUNET_SCHEDULER_Handl
960 * This function returns immediately, even if the connection has not 932 * This function returns immediately, even if the connection has not
961 * yet been established. This function only creates TCP connections. 933 * yet been established. This function only creates TCP connections.
962 * 934 *
963 * @param sched scheduler to use
964 * @param af_family address family to use 935 * @param af_family address family to use
965 * @param serv_addr server address 936 * @param serv_addr server address
966 * @param addrlen length of server address 937 * @param addrlen length of server address
967 * @return the socket handle 938 * @return the socket handle
968 */ 939 */
969struct GNUNET_CONNECTION_Handle * 940struct GNUNET_CONNECTION_Handle *
970GNUNET_CONNECTION_create_from_sockaddr (struct GNUNET_SCHEDULER_Handle 941GNUNET_CONNECTION_create_from_sockaddr (int af_family,
971 *sched, int af_family,
972 const struct sockaddr *serv_addr, 942 const struct sockaddr *serv_addr,
973 socklen_t addrlen) 943 socklen_t addrlen)
974{ 944{
@@ -990,7 +960,7 @@ GNUNET_CONNECTION_create_from_sockaddr (struct GNUNET_SCHEDULER_Handle
990 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (s)); 960 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (s));
991 return NULL; 961 return NULL;
992 } 962 }
993 ret = GNUNET_CONNECTION_create_from_existing (sched, s); 963 ret = GNUNET_CONNECTION_create_from_existing (s);
994 ret->addr = GNUNET_malloc (addrlen); 964 ret->addr = GNUNET_malloc (addrlen);
995 memcpy (ret->addr, serv_addr, addrlen); 965 memcpy (ret->addr, serv_addr, addrlen);
996 ret->addrlen = addrlen; 966 ret->addrlen = addrlen;
@@ -1041,8 +1011,7 @@ GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *sock,
1041 { 1011 {
1042 if (sock->write_task != GNUNET_SCHEDULER_NO_TASK) 1012 if (sock->write_task != GNUNET_SCHEDULER_NO_TASK)
1043 { 1013 {
1044 GNUNET_SCHEDULER_cancel (sock->sched, 1014 GNUNET_SCHEDULER_cancel (sock->write_task);
1045 sock->write_task);
1046 sock->write_task = GNUNET_SCHEDULER_NO_TASK; 1015 sock->write_task = GNUNET_SCHEDULER_NO_TASK;
1047 sock->write_buffer_off = 0; 1016 sock->write_buffer_off = 0;
1048 } 1017 }
@@ -1052,11 +1021,10 @@ GNUNET_CONNECTION_destroy (struct GNUNET_CONNECTION_Handle *sock,
1052 GNUNET_RESOLVER_request_cancel (sock->dns_active); 1021 GNUNET_RESOLVER_request_cancel (sock->dns_active);
1053 sock->dns_active = NULL; 1022 sock->dns_active = NULL;
1054 } 1023 }
1055 GNUNET_assert (sock->sched != NULL); 1024
1056 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task); 1025 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sock->destroy_task);
1057 sock->destroy_task 1026 sock->destroy_task
1058 = GNUNET_SCHEDULER_add_now (sock->sched, 1027 = GNUNET_SCHEDULER_add_now (&destroy_continuation, sock);
1059 &destroy_continuation, sock);
1060} 1028}
1061 1029
1062 1030
@@ -1113,8 +1081,7 @@ receive_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
1113 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1081 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1114 "Ignoring shutdown signal per configuration\n"); 1082 "Ignoring shutdown signal per configuration\n");
1115#endif 1083#endif
1116 sh->read_task = GNUNET_SCHEDULER_add_read_net (tc->sched, 1084 sh->read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_absolute_get_remaining
1117 GNUNET_TIME_absolute_get_remaining
1118 (sh->receive_timeout), 1085 (sh->receive_timeout),
1119 sh->sock, 1086 sh->sock,
1120 &receive_ready, sh); 1087 &receive_ready, sh);
@@ -1212,8 +1179,7 @@ receive_again (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
1212 } 1179 }
1213 GNUNET_assert (sh->sock != NULL); 1180 GNUNET_assert (sh->sock != NULL);
1214 /* connect succeeded, wait for data! */ 1181 /* connect succeeded, wait for data! */
1215 sh->read_task = GNUNET_SCHEDULER_add_read_net (tc->sched, 1182 sh->read_task = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_absolute_get_remaining
1216 GNUNET_TIME_absolute_get_remaining
1217 (sh->receive_timeout), 1183 (sh->receive_timeout),
1218 sh->sock, 1184 sh->sock,
1219 &receive_ready, sh); 1185 &receive_ready, sh);
@@ -1252,7 +1218,6 @@ GNUNET_CONNECTION_receive (struct GNUNET_CONNECTION_Handle *sock,
1252 if (sock->sock != NULL) 1218 if (sock->sock != NULL)
1253 { 1219 {
1254 memset (&tc, 0, sizeof (tc)); 1220 memset (&tc, 0, sizeof (tc));
1255 tc.sched = sock->sched;
1256 tc.reason = GNUNET_SCHEDULER_REASON_PREREQ_DONE; 1221 tc.reason = GNUNET_SCHEDULER_REASON_PREREQ_DONE;
1257 receive_again (sock, &tc); 1222 receive_again (sock, &tc);
1258 return; 1223 return;
@@ -1293,8 +1258,7 @@ GNUNET_CONNECTION_receive_cancel (struct GNUNET_CONNECTION_Handle *sock)
1293{ 1258{
1294 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) 1259 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK)
1295 { 1260 {
1296 GNUNET_assert (sock == GNUNET_SCHEDULER_cancel (sock->sched, 1261 GNUNET_assert (sock == GNUNET_SCHEDULER_cancel (sock->read_task));
1297 sock->read_task));
1298 sock->read_task = GNUNET_SCHEDULER_NO_TASK; 1262 sock->read_task = GNUNET_SCHEDULER_NO_TASK;
1299 } 1263 }
1300 else 1264 else
@@ -1421,8 +1385,7 @@ transmit_error (struct GNUNET_CONNECTION_Handle *sock)
1421 } 1385 }
1422 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK) 1386 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK)
1423 { 1387 {
1424 GNUNET_SCHEDULER_cancel (sock->sched, 1388 GNUNET_SCHEDULER_cancel (sock->read_task);
1425 sock->read_task);
1426 sock->read_task = GNUNET_SCHEDULER_NO_TASK; 1389 sock->read_task = GNUNET_SCHEDULER_NO_TASK;
1427 signal_timeout (sock); 1390 signal_timeout (sock);
1428 return; 1391 return;
@@ -1567,8 +1530,7 @@ SCHEDULE_WRITE:
1567#endif 1530#endif
1568 if (sock->write_task == GNUNET_SCHEDULER_NO_TASK) 1531 if (sock->write_task == GNUNET_SCHEDULER_NO_TASK)
1569 sock->write_task = 1532 sock->write_task =
1570 GNUNET_SCHEDULER_add_write_net (tc->sched, 1533 GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining
1571 GNUNET_TIME_absolute_get_remaining
1572 (sock->nth.transmit_timeout), 1534 (sock->nth.transmit_timeout),
1573 sock->sock, &transmit_ready, sock); 1535 sock->sock, &transmit_ready, sock);
1574} 1536}
@@ -1612,10 +1574,8 @@ GNUNET_CONNECTION_notify_transmit_ready (struct GNUNET_CONNECTION_Handle
1612 (sock->ap_head == NULL) && (sock->dns_active == NULL)) 1574 (sock->ap_head == NULL) && (sock->dns_active == NULL))
1613 { 1575 {
1614 if (sock->write_task != GNUNET_SCHEDULER_NO_TASK) 1576 if (sock->write_task != GNUNET_SCHEDULER_NO_TASK)
1615 GNUNET_SCHEDULER_cancel (sock->sched, 1577 GNUNET_SCHEDULER_cancel (sock->write_task);
1616 sock->write_task); 1578 sock->write_task = GNUNET_SCHEDULER_add_now (&connect_error, sock);
1617 sock->write_task = GNUNET_SCHEDULER_add_now (sock->sched,
1618 &connect_error, sock);
1619 return &sock->nth; 1579 return &sock->nth;
1620 } 1580 }
1621 if (GNUNET_SCHEDULER_NO_TASK != sock->write_task) 1581 if (GNUNET_SCHEDULER_NO_TASK != sock->write_task)
@@ -1626,8 +1586,7 @@ GNUNET_CONNECTION_notify_transmit_ready (struct GNUNET_CONNECTION_Handle
1626 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1586 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1627 "Scheduling transmit_ready (%p).\n", sock); 1587 "Scheduling transmit_ready (%p).\n", sock);
1628#endif 1588#endif
1629 sock->write_task = GNUNET_SCHEDULER_add_write_net (sock->sched, 1589 sock->write_task = GNUNET_SCHEDULER_add_write_net (GNUNET_TIME_absolute_get_remaining
1630 GNUNET_TIME_absolute_get_remaining
1631 (sock->nth. 1590 (sock->nth.
1632 transmit_timeout), 1591 transmit_timeout),
1633 sock->sock, 1592 sock->sock,
@@ -1642,8 +1601,7 @@ GNUNET_CONNECTION_notify_transmit_ready (struct GNUNET_CONNECTION_Handle
1642 sock); 1601 sock);
1643#endif 1602#endif
1644 sock->ccs |= COCO_TRANSMIT_READY; 1603 sock->ccs |= COCO_TRANSMIT_READY;
1645 sock->nth.timeout_task = GNUNET_SCHEDULER_add_delayed (sock->sched, 1604 sock->nth.timeout_task = GNUNET_SCHEDULER_add_delayed (timeout,
1646 timeout,
1647 &transmit_timeout, 1605 &transmit_timeout,
1648 sock); 1606 sock);
1649 } 1607 }
@@ -1668,7 +1626,7 @@ GNUNET_CONNECTION_notify_transmit_ready_cancel (struct
1668 "notify_transmit_ready_cancel cancels timeout_task (%p)\n", 1626 "notify_transmit_ready_cancel cancels timeout_task (%p)\n",
1669 h); 1627 h);
1670#endif 1628#endif
1671 GNUNET_SCHEDULER_cancel (h->sh->sched, h->timeout_task); 1629 GNUNET_SCHEDULER_cancel (h->timeout_task);
1672 h->timeout_task = GNUNET_SCHEDULER_NO_TASK; 1630 h->timeout_task = GNUNET_SCHEDULER_NO_TASK;
1673 h->sh->ccs -= COCO_TRANSMIT_READY; 1631 h->sh->ccs -= COCO_TRANSMIT_READY;
1674 } 1632 }
@@ -1676,7 +1634,7 @@ GNUNET_CONNECTION_notify_transmit_ready_cancel (struct
1676 { 1634 {
1677 if (h->sh->write_task != GNUNET_SCHEDULER_NO_TASK) 1635 if (h->sh->write_task != GNUNET_SCHEDULER_NO_TASK)
1678 { 1636 {
1679 GNUNET_SCHEDULER_cancel (h->sh->sched, h->sh->write_task); 1637 GNUNET_SCHEDULER_cancel (h->sh->write_task);
1680 h->sh->write_task = GNUNET_SCHEDULER_NO_TASK; 1638 h->sh->write_task = GNUNET_SCHEDULER_NO_TASK;
1681 } 1639 }
1682 } 1640 }