diff options
Diffstat (limited to 'src/util/client.c')
-rw-r--r-- | src/util/client.c | 172 |
1 files changed, 70 insertions, 102 deletions
diff --git a/src/util/client.c b/src/util/client.c index 032a6c5e4..59cd26ad1 100644 --- a/src/util/client.c +++ b/src/util/client.c | |||
@@ -293,15 +293,11 @@ do_connect (const char *service_name, | |||
293 | #endif | 293 | #endif |
294 | 294 | ||
295 | if ((GNUNET_OK != | 295 | if ((GNUNET_OK != |
296 | GNUNET_CONFIGURATION_get_value_number (cfg, | 296 | GNUNET_CONFIGURATION_get_value_number (cfg, service_name, "PORT", &port)) |
297 | service_name, | 297 | || (port > 65535) || |
298 | "PORT", | ||
299 | &port)) || | ||
300 | (port > 65535) || | ||
301 | (GNUNET_OK != | 298 | (GNUNET_OK != |
302 | GNUNET_CONFIGURATION_get_value_string (cfg, | 299 | GNUNET_CONFIGURATION_get_value_string (cfg, service_name, "HOSTNAME", |
303 | service_name, | 300 | &hostname))) |
304 | "HOSTNAME", &hostname))) | ||
305 | { | 301 | { |
306 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 302 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
307 | _ | 303 | _ |
@@ -325,13 +321,12 @@ do_connect (const char *service_name, | |||
325 | /* try UNIX */ | 321 | /* try UNIX */ |
326 | unixpath = NULL; | 322 | unixpath = NULL; |
327 | if ((GNUNET_OK == | 323 | if ((GNUNET_OK == |
328 | GNUNET_CONFIGURATION_get_value_string (cfg, | 324 | GNUNET_CONFIGURATION_get_value_string (cfg, service_name, "UNIXPATH", |
329 | service_name, | 325 | &unixpath)) && |
330 | "UNIXPATH", &unixpath)) && | ||
331 | (0 < strlen (unixpath))) | 326 | (0 < strlen (unixpath))) |
332 | { | 327 | { |
333 | sock = GNUNET_CONNECTION_create_from_connect_to_unixpath (cfg, | 328 | sock = |
334 | unixpath); | 329 | GNUNET_CONNECTION_create_from_connect_to_unixpath (cfg, unixpath); |
335 | if (sock != NULL) | 330 | if (sock != NULL) |
336 | { | 331 | { |
337 | GNUNET_free (unixpath); | 332 | GNUNET_free (unixpath); |
@@ -457,8 +452,8 @@ check_complete (struct GNUNET_CLIENT_Connection *conn) | |||
457 | { | 452 | { |
458 | if ((conn->received_pos >= sizeof (struct GNUNET_MessageHeader)) && | 453 | if ((conn->received_pos >= sizeof (struct GNUNET_MessageHeader)) && |
459 | (conn->received_pos >= | 454 | (conn->received_pos >= |
460 | ntohs (((const struct GNUNET_MessageHeader *) conn->received_buf)-> | 455 | ntohs (((const struct GNUNET_MessageHeader *) conn-> |
461 | size))) | 456 | received_buf)->size))) |
462 | conn->msg_complete = GNUNET_YES; | 457 | conn->msg_complete = GNUNET_YES; |
463 | } | 458 | } |
464 | 459 | ||
@@ -476,9 +471,7 @@ check_complete (struct GNUNET_CLIENT_Connection *conn) | |||
476 | * @param errCode value of errno (on errors receiving) | 471 | * @param errCode value of errno (on errors receiving) |
477 | */ | 472 | */ |
478 | static void | 473 | static void |
479 | receive_helper (void *cls, | 474 | receive_helper (void *cls, const void *buf, size_t available, |
480 | const void *buf, | ||
481 | size_t available, | ||
482 | const struct sockaddr *addr, socklen_t addrlen, int errCode) | 475 | const struct sockaddr *addr, socklen_t addrlen, int errCode) |
483 | { | 476 | { |
484 | struct GNUNET_CLIENT_Connection *conn = cls; | 477 | struct GNUNET_CLIENT_Connection *conn = cls; |
@@ -512,8 +505,8 @@ receive_helper (void *cls, | |||
512 | 505 | ||
513 | /* slow path: append to array */ | 506 | /* slow path: append to array */ |
514 | if (conn->received_size < conn->received_pos + available) | 507 | if (conn->received_size < conn->received_pos + available) |
515 | GNUNET_array_grow (conn->received_buf, | 508 | GNUNET_array_grow (conn->received_buf, conn->received_size, |
516 | conn->received_size, conn->received_pos + available); | 509 | conn->received_pos + available); |
517 | memcpy (&conn->received_buf[conn->received_pos], buf, available); | 510 | memcpy (&conn->received_buf[conn->received_pos], buf, available); |
518 | conn->received_pos += available; | 511 | conn->received_pos += available; |
519 | check_complete (conn); | 512 | check_complete (conn); |
@@ -527,8 +520,7 @@ receive_helper (void *cls, | |||
527 | return; | 520 | return; |
528 | } | 521 | } |
529 | /* back to receive -- either for more data or to call callback! */ | 522 | /* back to receive -- either for more data or to call callback! */ |
530 | GNUNET_CLIENT_receive (conn, | 523 | GNUNET_CLIENT_receive (conn, conn->receiver_handler, |
531 | conn->receiver_handler, | ||
532 | conn->receiver_handler_cls, remaining); | 524 | conn->receiver_handler_cls, remaining); |
533 | } | 525 | } |
534 | 526 | ||
@@ -553,15 +545,15 @@ receive_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
553 | 545 | ||
554 | #if DEBUG_CLIENT | 546 | #if DEBUG_CLIENT |
555 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 547 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
556 | "Received message of type %u and size %u\n", | 548 | "Received message of type %u and size %u\n", ntohs (cmsg->type), |
557 | ntohs (cmsg->type), msize); | 549 | msize); |
558 | #endif | 550 | #endif |
559 | sock->receive_task = GNUNET_SCHEDULER_NO_TASK; | 551 | sock->receive_task = GNUNET_SCHEDULER_NO_TASK; |
560 | GNUNET_assert (GNUNET_YES == sock->msg_complete); | 552 | GNUNET_assert (GNUNET_YES == sock->msg_complete); |
561 | GNUNET_assert (sock->received_pos >= msize); | 553 | GNUNET_assert (sock->received_pos >= msize); |
562 | memcpy (msg, cmsg, msize); | 554 | memcpy (msg, cmsg, msize); |
563 | memmove (sock->received_buf, | 555 | memmove (sock->received_buf, &sock->received_buf[msize], |
564 | &sock->received_buf[msize], sock->received_pos - msize); | 556 | sock->received_pos - msize); |
565 | sock->received_pos -= msize; | 557 | sock->received_pos -= msize; |
566 | sock->msg_complete = GNUNET_NO; | 558 | sock->msg_complete = GNUNET_NO; |
567 | sock->receiver_handler = NULL; | 559 | sock->receiver_handler = NULL; |
@@ -581,8 +573,8 @@ receive_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
581 | */ | 573 | */ |
582 | void | 574 | void |
583 | GNUNET_CLIENT_receive (struct GNUNET_CLIENT_Connection *sock, | 575 | GNUNET_CLIENT_receive (struct GNUNET_CLIENT_Connection *sock, |
584 | GNUNET_CLIENT_MessageHandler handler, | 576 | GNUNET_CLIENT_MessageHandler handler, void *handler_cls, |
585 | void *handler_cls, struct GNUNET_TIME_Relative timeout) | 577 | struct GNUNET_TIME_Relative timeout) |
586 | { | 578 | { |
587 | if (sock->sock == NULL) | 579 | if (sock->sock == NULL) |
588 | { | 580 | { |
@@ -607,8 +599,7 @@ GNUNET_CLIENT_receive (struct GNUNET_CLIENT_Connection *sock, | |||
607 | #if DEBUG_CLIENT | 599 | #if DEBUG_CLIENT |
608 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "calling GNUNET_CONNECTION_receive\n"); | 600 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "calling GNUNET_CONNECTION_receive\n"); |
609 | #endif | 601 | #endif |
610 | GNUNET_CONNECTION_receive (sock->sock, | 602 | GNUNET_CONNECTION_receive (sock->sock, GNUNET_SERVER_MAX_MESSAGE_SIZE - 1, |
611 | GNUNET_SERVER_MAX_MESSAGE_SIZE - 1, | ||
612 | timeout, &receive_helper, sock); | 603 | timeout, &receive_helper, sock); |
613 | } | 604 | } |
614 | } | 605 | } |
@@ -620,8 +611,8 @@ GNUNET_CLIENT_receive (struct GNUNET_CLIENT_Connection *sock, | |||
620 | static void | 611 | static void |
621 | service_test_error (GNUNET_SCHEDULER_Task task, void *task_cls) | 612 | service_test_error (GNUNET_SCHEDULER_Task task, void *task_cls) |
622 | { | 613 | { |
623 | GNUNET_SCHEDULER_add_continuation (task, | 614 | GNUNET_SCHEDULER_add_continuation (task, task_cls, |
624 | task_cls, GNUNET_SCHEDULER_REASON_TIMEOUT); | 615 | GNUNET_SCHEDULER_REASON_TIMEOUT); |
625 | } | 616 | } |
626 | 617 | ||
627 | 618 | ||
@@ -645,8 +636,7 @@ confirm_handler (void *cls, const struct GNUNET_MessageHeader *msg) | |||
645 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 636 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
646 | "Received confirmation that service is running.\n"); | 637 | "Received confirmation that service is running.\n"); |
647 | #endif | 638 | #endif |
648 | GNUNET_SCHEDULER_add_continuation (conn->test_cb, | 639 | GNUNET_SCHEDULER_add_continuation (conn->test_cb, conn->test_cb_cls, |
649 | conn->test_cb_cls, | ||
650 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | 640 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); |
651 | } | 641 | } |
652 | else | 642 | else |
@@ -688,11 +678,9 @@ write_test (void *cls, size_t size, void *buf) | |||
688 | msg = (struct GNUNET_MessageHeader *) buf; | 678 | msg = (struct GNUNET_MessageHeader *) buf; |
689 | msg->type = htons (GNUNET_MESSAGE_TYPE_TEST); | 679 | msg->type = htons (GNUNET_MESSAGE_TYPE_TEST); |
690 | msg->size = htons (sizeof (struct GNUNET_MessageHeader)); | 680 | msg->size = htons (sizeof (struct GNUNET_MessageHeader)); |
691 | GNUNET_CLIENT_receive (conn, | 681 | GNUNET_CLIENT_receive (conn, &confirm_handler, conn, |
692 | &confirm_handler, | 682 | GNUNET_TIME_absolute_get_remaining (conn-> |
693 | conn, | 683 | test_deadline)); |
694 | GNUNET_TIME_absolute_get_remaining | ||
695 | (conn->test_deadline)); | ||
696 | return sizeof (struct GNUNET_MessageHeader); | 684 | return sizeof (struct GNUNET_MessageHeader); |
697 | } | 685 | } |
698 | 686 | ||
@@ -722,8 +710,8 @@ GNUNET_CLIENT_service_test (const char *service, | |||
722 | struct GNUNET_CLIENT_Connection *conn; | 710 | struct GNUNET_CLIENT_Connection *conn; |
723 | 711 | ||
724 | #if DEBUG_CLIENT | 712 | #if DEBUG_CLIENT |
725 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 713 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Testing if service `%s' is running.\n", |
726 | "Testing if service `%s' is running.\n", service); | 714 | service); |
727 | #endif | 715 | #endif |
728 | #ifdef AF_UNIX | 716 | #ifdef AF_UNIX |
729 | { | 717 | { |
@@ -761,15 +749,13 @@ GNUNET_CLIENT_service_test (const char *service, | |||
761 | s_un.sun_len = (u_char) slen; | 749 | s_un.sun_len = (u_char) slen; |
762 | #endif | 750 | #endif |
763 | if (GNUNET_OK != | 751 | if (GNUNET_OK != |
764 | GNUNET_NETWORK_socket_bind (sock, | 752 | GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_un, |
765 | (const struct sockaddr *) &s_un, | ||
766 | slen)) | 753 | slen)) |
767 | { | 754 | { |
768 | /* failed to bind => service must be running */ | 755 | /* failed to bind => service must be running */ |
769 | GNUNET_free (unixpath); | 756 | GNUNET_free (unixpath); |
770 | (void) GNUNET_NETWORK_socket_close (sock); | 757 | (void) GNUNET_NETWORK_socket_close (sock); |
771 | GNUNET_SCHEDULER_add_continuation (task, | 758 | GNUNET_SCHEDULER_add_continuation (task, task_cls, |
772 | task_cls, | ||
773 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | 759 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); |
774 | return; | 760 | return; |
775 | } | 761 | } |
@@ -784,14 +770,11 @@ GNUNET_CLIENT_service_test (const char *service, | |||
784 | 770 | ||
785 | hostname = NULL; | 771 | hostname = NULL; |
786 | if ((GNUNET_OK != | 772 | if ((GNUNET_OK != |
787 | GNUNET_CONFIGURATION_get_value_number (cfg, | 773 | GNUNET_CONFIGURATION_get_value_number (cfg, service, "PORT", &port)) || |
788 | service, | ||
789 | "PORT", | ||
790 | &port)) || | ||
791 | (port > 65535) || | 774 | (port > 65535) || |
792 | (GNUNET_OK != | 775 | (GNUNET_OK != |
793 | GNUNET_CONFIGURATION_get_value_string (cfg, | 776 | GNUNET_CONFIGURATION_get_value_string (cfg, service, "HOSTNAME", |
794 | service, "HOSTNAME", &hostname))) | 777 | &hostname))) |
795 | { | 778 | { |
796 | /* UNIXPATH failed (if possible) AND IP failed => error */ | 779 | /* UNIXPATH failed (if possible) AND IP failed => error */ |
797 | service_test_error (task, task_cls); | 780 | service_test_error (task, task_cls); |
@@ -818,15 +801,13 @@ GNUNET_CLIENT_service_test (const char *service, | |||
818 | if (sock != NULL) | 801 | if (sock != NULL) |
819 | { | 802 | { |
820 | if (GNUNET_OK != | 803 | if (GNUNET_OK != |
821 | GNUNET_NETWORK_socket_bind (sock, | 804 | GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_in, |
822 | (const struct sockaddr *) &s_in, | ||
823 | sizeof (s_in))) | 805 | sizeof (s_in))) |
824 | { | 806 | { |
825 | /* failed to bind => service must be running */ | 807 | /* failed to bind => service must be running */ |
826 | GNUNET_free (hostname); | 808 | GNUNET_free (hostname); |
827 | (void) GNUNET_NETWORK_socket_close (sock); | 809 | (void) GNUNET_NETWORK_socket_close (sock); |
828 | GNUNET_SCHEDULER_add_continuation (task, | 810 | GNUNET_SCHEDULER_add_continuation (task, task_cls, |
829 | task_cls, | ||
830 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | 811 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); |
831 | return; | 812 | return; |
832 | } | 813 | } |
@@ -854,15 +835,13 @@ GNUNET_CLIENT_service_test (const char *service, | |||
854 | if (sock != NULL) | 835 | if (sock != NULL) |
855 | { | 836 | { |
856 | if (GNUNET_OK != | 837 | if (GNUNET_OK != |
857 | GNUNET_NETWORK_socket_bind (sock, | 838 | GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_in6, |
858 | (const struct sockaddr *) &s_in6, | ||
859 | sizeof (s_in6))) | 839 | sizeof (s_in6))) |
860 | { | 840 | { |
861 | /* failed to bind => service must be running */ | 841 | /* failed to bind => service must be running */ |
862 | GNUNET_free (hostname); | 842 | GNUNET_free (hostname); |
863 | (void) GNUNET_NETWORK_socket_close (sock); | 843 | (void) GNUNET_NETWORK_socket_close (sock); |
864 | GNUNET_SCHEDULER_add_continuation (task, | 844 | GNUNET_SCHEDULER_add_continuation (task, task_cls, |
865 | task_cls, | ||
866 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | 845 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); |
867 | return; | 846 | return; |
868 | } | 847 | } |
@@ -889,8 +868,7 @@ GNUNET_CLIENT_service_test (const char *service, | |||
889 | if (conn == NULL) | 868 | if (conn == NULL) |
890 | { | 869 | { |
891 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 870 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
892 | _ | 871 | _("Could not connect to service `%s', must not be running.\n"), |
893 | ("Could not connect to service `%s', must not be running.\n"), | ||
894 | service); | 872 | service); |
895 | service_test_error (task, task_cls); | 873 | service_test_error (task, task_cls); |
896 | return; | 874 | return; |
@@ -899,11 +877,11 @@ GNUNET_CLIENT_service_test (const char *service, | |||
899 | conn->test_cb_cls = task_cls; | 877 | conn->test_cb_cls = task_cls; |
900 | conn->test_deadline = GNUNET_TIME_relative_to_absolute (timeout); | 878 | conn->test_deadline = GNUNET_TIME_relative_to_absolute (timeout); |
901 | 879 | ||
902 | if (NULL == GNUNET_CLIENT_notify_transmit_ready (conn, | 880 | if (NULL == |
903 | sizeof (struct | 881 | GNUNET_CLIENT_notify_transmit_ready (conn, |
904 | GNUNET_MessageHeader), | 882 | sizeof (struct GNUNET_MessageHeader), |
905 | timeout, GNUNET_YES, | 883 | timeout, GNUNET_YES, &write_test, |
906 | &write_test, conn)) | 884 | conn)) |
907 | { | 885 | { |
908 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 886 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
909 | _("Failure to transmit request to service `%s'\n"), service); | 887 | _("Failure to transmit request to service `%s'\n"), service); |
@@ -952,8 +930,8 @@ client_delayed_retry (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
952 | GNUNET_free (th); | 930 | GNUNET_free (th); |
953 | return; | 931 | return; |
954 | } | 932 | } |
955 | th->sock->sock = do_connect (th->sock->service_name, | 933 | th->sock->sock = |
956 | th->sock->cfg, th->sock->attempts++); | 934 | do_connect (th->sock->service_name, th->sock->cfg, th->sock->attempts++); |
957 | if (NULL == th->sock->sock) | 935 | if (NULL == th->sock->sock) |
958 | { | 936 | { |
959 | /* could happen if we're out of sockets */ | 937 | /* could happen if we're out of sockets */ |
@@ -970,17 +948,16 @@ client_delayed_retry (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
970 | MAX_ATTEMPTS - th->attempts_left, | 948 | MAX_ATTEMPTS - th->attempts_left, |
971 | (unsigned long long) delay.rel_value); | 949 | (unsigned long long) delay.rel_value); |
972 | #endif | 950 | #endif |
973 | th->reconnect_task = GNUNET_SCHEDULER_add_delayed (delay, | 951 | th->reconnect_task = |
974 | &client_delayed_retry, | 952 | GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th); |
975 | th); | ||
976 | return; | 953 | return; |
977 | } | 954 | } |
978 | GNUNET_CONNECTION_ignore_shutdown (th->sock->sock, th->sock->ignore_shutdown); | 955 | GNUNET_CONNECTION_ignore_shutdown (th->sock->sock, th->sock->ignore_shutdown); |
979 | th->th = GNUNET_CONNECTION_notify_transmit_ready (th->sock->sock, | 956 | th->th = |
980 | th->size, | 957 | GNUNET_CONNECTION_notify_transmit_ready (th->sock->sock, th->size, |
981 | GNUNET_TIME_absolute_get_remaining | 958 | GNUNET_TIME_absolute_get_remaining |
982 | (th->timeout), | 959 | (th->timeout), &client_notify, |
983 | &client_notify, th); | 960 | th); |
984 | if (th->th == NULL) | 961 | if (th->th == NULL) |
985 | { | 962 | { |
986 | GNUNET_break (0); | 963 | GNUNET_break (0); |
@@ -1037,8 +1014,7 @@ client_notify (void *cls, size_t size, void *buf) | |||
1037 | GNUNET_CONNECTION_destroy (th->sock->sock, GNUNET_NO); | 1014 | GNUNET_CONNECTION_destroy (th->sock->sock, GNUNET_NO); |
1038 | th->sock->sock = NULL; | 1015 | th->sock->sock = NULL; |
1039 | delay = GNUNET_TIME_relative_min (delay, th->sock->back_off); | 1016 | delay = GNUNET_TIME_relative_min (delay, th->sock->back_off); |
1040 | th->sock->back_off | 1017 | th->sock->back_off = |
1041 | = | ||
1042 | GNUNET_TIME_relative_min (GNUNET_TIME_relative_multiply | 1018 | GNUNET_TIME_relative_min (GNUNET_TIME_relative_multiply |
1043 | (th->sock->back_off, 2), | 1019 | (th->sock->back_off, 2), |
1044 | GNUNET_TIME_UNIT_SECONDS); | 1020 | GNUNET_TIME_UNIT_SECONDS); |
@@ -1049,9 +1025,8 @@ client_notify (void *cls, size_t size, void *buf) | |||
1049 | (unsigned long long) delay.rel_value); | 1025 | (unsigned long long) delay.rel_value); |
1050 | #endif | 1026 | #endif |
1051 | th->sock->th = th; | 1027 | th->sock->th = th; |
1052 | th->reconnect_task = GNUNET_SCHEDULER_add_delayed (delay, | 1028 | th->reconnect_task = |
1053 | &client_delayed_retry, | 1029 | GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th); |
1054 | th); | ||
1055 | return 0; | 1030 | return 0; |
1056 | } | 1031 | } |
1057 | GNUNET_assert (size >= th->size); | 1032 | GNUNET_assert (size >= th->size); |
@@ -1108,17 +1083,16 @@ GNUNET_CLIENT_notify_transmit_ready (struct GNUNET_CLIENT_Connection *sock, | |||
1108 | sock->th = th; | 1083 | sock->th = th; |
1109 | if (sock->sock == NULL) | 1084 | if (sock->sock == NULL) |
1110 | { | 1085 | { |
1111 | th->reconnect_task = GNUNET_SCHEDULER_add_delayed (sock->back_off, | 1086 | th->reconnect_task = |
1112 | &client_delayed_retry, | 1087 | GNUNET_SCHEDULER_add_delayed (sock->back_off, &client_delayed_retry, |
1113 | th); | 1088 | th); |
1114 | 1089 | ||
1115 | } | 1090 | } |
1116 | else | 1091 | else |
1117 | { | 1092 | { |
1118 | th->th = GNUNET_CONNECTION_notify_transmit_ready (sock->sock, | 1093 | th->th = |
1119 | size, | 1094 | GNUNET_CONNECTION_notify_transmit_ready (sock->sock, size, timeout, |
1120 | timeout, | 1095 | &client_notify, th); |
1121 | &client_notify, th); | ||
1122 | if (NULL == th->th) | 1096 | if (NULL == th->th) |
1123 | { | 1097 | { |
1124 | GNUNET_break (0); | 1098 | GNUNET_break (0); |
@@ -1137,8 +1111,8 @@ GNUNET_CLIENT_notify_transmit_ready (struct GNUNET_CLIENT_Connection *sock, | |||
1137 | * @param th handle from the original request. | 1111 | * @param th handle from the original request. |
1138 | */ | 1112 | */ |
1139 | void | 1113 | void |
1140 | GNUNET_CLIENT_notify_transmit_ready_cancel (struct | 1114 | GNUNET_CLIENT_notify_transmit_ready_cancel (struct GNUNET_CLIENT_TransmitHandle |
1141 | GNUNET_CLIENT_TransmitHandle *th) | 1115 | *th) |
1142 | { | 1116 | { |
1143 | if (th->reconnect_task != GNUNET_SCHEDULER_NO_TASK) | 1117 | if (th->reconnect_task != GNUNET_SCHEDULER_NO_TASK) |
1144 | { | 1118 | { |
@@ -1189,9 +1163,7 @@ transmit_for_response (void *cls, size_t size, void *buf) | |||
1189 | } | 1163 | } |
1190 | GNUNET_assert (size >= msize); | 1164 | GNUNET_assert (size >= msize); |
1191 | memcpy (buf, tc->hdr, msize); | 1165 | memcpy (buf, tc->hdr, msize); |
1192 | GNUNET_CLIENT_receive (tc->sock, | 1166 | GNUNET_CLIENT_receive (tc->sock, tc->rn, tc->rn_cls, |
1193 | tc->rn, | ||
1194 | tc->rn_cls, | ||
1195 | GNUNET_TIME_absolute_get_remaining (tc->timeout)); | 1167 | GNUNET_TIME_absolute_get_remaining (tc->timeout)); |
1196 | GNUNET_free (tc); | 1168 | GNUNET_free (tc); |
1197 | return msize; | 1169 | return msize; |
@@ -1220,10 +1192,8 @@ transmit_for_response (void *cls, size_t size, void *buf) | |||
1220 | * is already pending | 1192 | * is already pending |
1221 | */ | 1193 | */ |
1222 | int | 1194 | int |
1223 | GNUNET_CLIENT_transmit_and_get_response (struct GNUNET_CLIENT_Connection | 1195 | GNUNET_CLIENT_transmit_and_get_response (struct GNUNET_CLIENT_Connection *sock, |
1224 | *sock, | 1196 | const struct GNUNET_MessageHeader *hdr, |
1225 | const struct GNUNET_MessageHeader | ||
1226 | *hdr, | ||
1227 | struct GNUNET_TIME_Relative timeout, | 1197 | struct GNUNET_TIME_Relative timeout, |
1228 | int auto_retry, | 1198 | int auto_retry, |
1229 | GNUNET_CLIENT_MessageHandler rn, | 1199 | GNUNET_CLIENT_MessageHandler rn, |
@@ -1243,11 +1213,9 @@ GNUNET_CLIENT_transmit_and_get_response (struct GNUNET_CLIENT_Connection | |||
1243 | tc->timeout = GNUNET_TIME_relative_to_absolute (timeout); | 1213 | tc->timeout = GNUNET_TIME_relative_to_absolute (timeout); |
1244 | tc->rn = rn; | 1214 | tc->rn = rn; |
1245 | tc->rn_cls = rn_cls; | 1215 | tc->rn_cls = rn_cls; |
1246 | if (NULL == GNUNET_CLIENT_notify_transmit_ready (sock, | 1216 | if (NULL == |
1247 | msize, | 1217 | GNUNET_CLIENT_notify_transmit_ready (sock, msize, timeout, auto_retry, |
1248 | timeout, | 1218 | &transmit_for_response, tc)) |
1249 | auto_retry, | ||
1250 | &transmit_for_response, tc)) | ||
1251 | { | 1219 | { |
1252 | GNUNET_break (0); | 1220 | GNUNET_break (0); |
1253 | GNUNET_free (tc); | 1221 | GNUNET_free (tc); |