aboutsummaryrefslogtreecommitdiff
path: root/src/util/network.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-07-24 22:04:41 +0000
committerChristian Grothoff <christian@grothoff.org>2009-07-24 22:04:41 +0000
commit70e6847205a9f9b9b660be2a173d5bc309eaa58d (patch)
treee2649865fbff3e7cbb2e85e381a6268b9aa01e0d /src/util/network.c
parent0722614037876469e205546db5ab5fc892b5cf8c (diff)
downloadgnunet-70e6847205a9f9b9b660be2a173d5bc309eaa58d.tar.gz
gnunet-70e6847205a9f9b9b660be2a173d5bc309eaa58d.zip
quota management and better name for NO_TASK'
'
Diffstat (limited to 'src/util/network.c')
-rw-r--r--src/util/network.c62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/util/network.c b/src/util/network.c
index cb8542329..9b61bd8c2 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -541,7 +541,7 @@ connect_continuation (void *cls,
541 int error; 541 int error;
542 542
543 /* nobody needs to wait for us anymore... */ 543 /* nobody needs to wait for us anymore... */
544 sock->connect_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 544 sock->connect_task = GNUNET_SCHEDULER_NO_TASK;
545 /* Note: write-ready does NOT mean connect succeeded, 545 /* Note: write-ready does NOT mean connect succeeded,
546 we need to use getsockopt to be sure */ 546 we need to use getsockopt to be sure */
547 len = sizeof (error); 547 len = sizeof (error);
@@ -574,7 +574,7 @@ connect_continuation (void *cls,
574 } 574 }
575 sock->connect_task = GNUNET_SCHEDULER_add_write (tc->sched, GNUNET_NO, /* abort on shutdown */ 575 sock->connect_task = GNUNET_SCHEDULER_add_write (tc->sched, GNUNET_NO, /* abort on shutdown */
576 GNUNET_SCHEDULER_PRIORITY_KEEP, 576 GNUNET_SCHEDULER_PRIORITY_KEEP,
577 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK, 577 GNUNET_SCHEDULER_NO_TASK,
578 GNUNET_NETWORK_CONNECT_RETRY_TIMEOUT, 578 GNUNET_NETWORK_CONNECT_RETRY_TIMEOUT,
579 sock->sock, 579 sock->sock,
580 &connect_continuation, 580 &connect_continuation,
@@ -630,7 +630,7 @@ GNUNET_NETWORK_socket_create_from_connect (struct GNUNET_SCHEDULER_Handle
630 } 630 }
631 ret->connect_task = GNUNET_SCHEDULER_add_write (sched, GNUNET_NO, /* abort on shutdown */ 631 ret->connect_task = GNUNET_SCHEDULER_add_write (sched, GNUNET_NO, /* abort on shutdown */
632 GNUNET_SCHEDULER_PRIORITY_KEEP, 632 GNUNET_SCHEDULER_PRIORITY_KEEP,
633 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK, 633 GNUNET_SCHEDULER_NO_TASK,
634 GNUNET_NETWORK_CONNECT_RETRY_TIMEOUT, 634 GNUNET_NETWORK_CONNECT_RETRY_TIMEOUT,
635 ret->sock, 635 ret->sock,
636 &connect_continuation, ret); 636 &connect_continuation, ret);
@@ -727,7 +727,7 @@ destroy_continuation (void *cls,
727 struct GNUNET_NETWORK_SocketHandle *sock = cls; 727 struct GNUNET_NETWORK_SocketHandle *sock = cls;
728 GNUNET_NETWORK_TransmitReadyNotify notify; 728 GNUNET_NETWORK_TransmitReadyNotify notify;
729 729
730 if (sock->write_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 730 if (sock->write_task != GNUNET_SCHEDULER_NO_TASK)
731 { 731 {
732 GNUNET_SCHEDULER_add_after (sock->sched, 732 GNUNET_SCHEDULER_add_after (sock->sched,
733 GNUNET_YES, 733 GNUNET_YES,
@@ -743,7 +743,7 @@ destroy_continuation (void *cls,
743#endif 743#endif
744 SHUTDOWN (sock->sock, SHUT_RDWR); 744 SHUTDOWN (sock->sock, SHUT_RDWR);
745 } 745 }
746 if (sock->read_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 746 if (sock->read_task != GNUNET_SCHEDULER_NO_TASK)
747 { 747 {
748 GNUNET_SCHEDULER_add_after (sock->sched, 748 GNUNET_SCHEDULER_add_after (sock->sched,
749 GNUNET_YES, 749 GNUNET_YES,
@@ -756,10 +756,10 @@ destroy_continuation (void *cls,
756 { 756 {
757 sock->nth.notify_ready = NULL; 757 sock->nth.notify_ready = NULL;
758 notify (sock->nth.notify_ready_cls, 0, NULL); 758 notify (sock->nth.notify_ready_cls, 0, NULL);
759 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 759 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK)
760 { 760 {
761 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task); 761 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task);
762 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 762 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK;
763 } 763 }
764 } 764 }
765 if (sock->sock != -1) 765 if (sock->sock != -1)
@@ -837,7 +837,7 @@ receive_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
837 ssize_t ret; 837 ssize_t ret;
838 GNUNET_NETWORK_Receiver receiver; 838 GNUNET_NETWORK_Receiver receiver;
839 839
840 sh->read_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 840 sh->read_task = GNUNET_SCHEDULER_NO_TASK;
841 now = GNUNET_TIME_absolute_get (); 841 now = GNUNET_TIME_absolute_get ();
842 if ((now.value > sh->receive_timeout.value) || 842 if ((now.value > sh->receive_timeout.value) ||
843 (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) || 843 (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT)) ||
@@ -907,9 +907,9 @@ receive_again (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
907 struct GNUNET_NETWORK_SocketHandle *sh = cls; 907 struct GNUNET_NETWORK_SocketHandle *sh = cls;
908 struct GNUNET_TIME_Absolute now; 908 struct GNUNET_TIME_Absolute now;
909 909
910 sh->read_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 910 sh->read_task = GNUNET_SCHEDULER_NO_TASK;
911 if ((sh->sock == -1) && 911 if ((sh->sock == -1) &&
912 (sh->connect_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK)) 912 (sh->connect_task == GNUNET_SCHEDULER_NO_TASK))
913 { 913 {
914 /* not connected and no longer trying */ 914 /* not connected and no longer trying */
915#if DEBUG_NETWORK 915#if DEBUG_NETWORK
@@ -930,7 +930,7 @@ receive_again (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
930 signal_timeout (sh); 930 signal_timeout (sh);
931 return; 931 return;
932 } 932 }
933 if (sh->connect_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 933 if (sh->connect_task != GNUNET_SCHEDULER_NO_TASK)
934 { 934 {
935 /* connect was retried */ 935 /* connect was retried */
936 sh->read_task = GNUNET_SCHEDULER_add_after (tc->sched, 936 sh->read_task = GNUNET_SCHEDULER_add_after (tc->sched,
@@ -965,7 +965,7 @@ receive_again (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
965 * @param timeout maximum amount of time to wait (use -1 for "forever") 965 * @param timeout maximum amount of time to wait (use -1 for "forever")
966 * @param receiver function to call with received data 966 * @param receiver function to call with received data
967 * @param receiver_cls closure for receiver 967 * @param receiver_cls closure for receiver
968 * @return scheduler task ID used for receiving, GNUNET_SCHEDULER_NO_PREREQUISITE_TASK on error 968 * @return scheduler task ID used for receiving, GNUNET_SCHEDULER_NO_TASK on error
969 */ 969 */
970GNUNET_SCHEDULER_TaskIdentifier 970GNUNET_SCHEDULER_TaskIdentifier
971GNUNET_NETWORK_receive (struct GNUNET_NETWORK_SocketHandle *sock, 971GNUNET_NETWORK_receive (struct GNUNET_NETWORK_SocketHandle *sock,
@@ -975,7 +975,7 @@ GNUNET_NETWORK_receive (struct GNUNET_NETWORK_SocketHandle *sock,
975{ 975{
976 struct GNUNET_SCHEDULER_TaskContext tc; 976 struct GNUNET_SCHEDULER_TaskContext tc;
977 977
978 GNUNET_assert ((sock->read_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) && 978 GNUNET_assert ((sock->read_task == GNUNET_SCHEDULER_NO_TASK) &&
979 (sock->receiver == NULL)); 979 (sock->receiver == NULL));
980 sock->receiver = receiver; 980 sock->receiver = receiver;
981 sock->receiver_cls = receiver_cls; 981 sock->receiver_cls = receiver_cls;
@@ -1004,7 +1004,7 @@ GNUNET_NETWORK_receive_cancel (struct GNUNET_NETWORK_SocketHandle *sock,
1004{ 1004{
1005 GNUNET_assert (sock->read_task == task); 1005 GNUNET_assert (sock->read_task == task);
1006 GNUNET_assert (sock == GNUNET_SCHEDULER_cancel (sock->sched, task)); 1006 GNUNET_assert (sock == GNUNET_SCHEDULER_cancel (sock->sched, task));
1007 sock->read_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 1007 sock->read_task = GNUNET_SCHEDULER_NO_TASK;
1008 sock->receiver = NULL; 1008 sock->receiver = NULL;
1009 return sock->receiver_cls; 1009 return sock->receiver_cls;
1010} 1010}
@@ -1025,7 +1025,7 @@ process_notify (struct GNUNET_NETWORK_SocketHandle *sock)
1025 size_t size; 1025 size_t size;
1026 GNUNET_NETWORK_TransmitReadyNotify notify; 1026 GNUNET_NETWORK_TransmitReadyNotify notify;
1027 1027
1028 GNUNET_assert (sock->write_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK); 1028 GNUNET_assert (sock->write_task == GNUNET_SCHEDULER_NO_TASK);
1029 if (NULL == (notify = sock->nth.notify_ready)) 1029 if (NULL == (notify = sock->nth.notify_ready))
1030 return GNUNET_NO; 1030 return GNUNET_NO;
1031 used = sock->write_buffer_off - sock->write_buffer_pos; 1031 used = sock->write_buffer_off - sock->write_buffer_pos;
@@ -1034,10 +1034,10 @@ process_notify (struct GNUNET_NETWORK_SocketHandle *sock)
1034 if (sock->nth.notify_size > avail) 1034 if (sock->nth.notify_size > avail)
1035 return GNUNET_NO; 1035 return GNUNET_NO;
1036 sock->nth.notify_ready = NULL; 1036 sock->nth.notify_ready = NULL;
1037 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1037 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK)
1038 { 1038 {
1039 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task); 1039 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task);
1040 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 1040 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK;
1041 } 1041 }
1042 if (sock->write_buffer_size - sock->write_buffer_off < size) 1042 if (sock->write_buffer_size - sock->write_buffer_off < size)
1043 { 1043 {
@@ -1084,10 +1084,10 @@ transmit_error (struct GNUNET_NETWORK_SocketHandle *sock)
1084{ 1084{
1085 if (sock->nth.notify_ready == NULL) 1085 if (sock->nth.notify_ready == NULL)
1086 return; /* nobody to tell about it */ 1086 return; /* nobody to tell about it */
1087 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1087 if (sock->nth.timeout_task != GNUNET_SCHEDULER_NO_TASK)
1088 { 1088 {
1089 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task); 1089 GNUNET_SCHEDULER_cancel (sock->sched, sock->nth.timeout_task);
1090 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 1090 sock->nth.timeout_task = GNUNET_SCHEDULER_NO_TASK;
1091 } 1091 }
1092 transmit_timeout (sock, NULL); 1092 transmit_timeout (sock, NULL);
1093} 1093}
@@ -1105,13 +1105,13 @@ transmit_ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
1105 ssize_t ret; 1105 ssize_t ret;
1106 size_t have; 1106 size_t have;
1107 1107
1108 GNUNET_assert (sock->write_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK); 1108 GNUNET_assert (sock->write_task != GNUNET_SCHEDULER_NO_TASK);
1109 sock->write_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 1109 sock->write_task = GNUNET_SCHEDULER_NO_TASK;
1110 if (sock->connect_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1110 if (sock->connect_task != GNUNET_SCHEDULER_NO_TASK)
1111 { 1111 {
1112 /* still waiting for connect */ 1112 /* still waiting for connect */
1113 GNUNET_assert (sock->write_task == 1113 GNUNET_assert (sock->write_task ==
1114 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK); 1114 GNUNET_SCHEDULER_NO_TASK);
1115 sock->write_task = 1115 sock->write_task =
1116 GNUNET_SCHEDULER_add_delayed (tc->sched, GNUNET_NO, 1116 GNUNET_SCHEDULER_add_delayed (tc->sched, GNUNET_NO,
1117 GNUNET_SCHEDULER_PRIORITY_KEEP, 1117 GNUNET_SCHEDULER_PRIORITY_KEEP,
@@ -1195,12 +1195,12 @@ RETRY:
1195 return; /* all data sent! */ 1195 return; /* all data sent! */
1196 /* not done writing, schedule more */ 1196 /* not done writing, schedule more */
1197SCHEDULE_WRITE: 1197SCHEDULE_WRITE:
1198 if (sock->write_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1198 if (sock->write_task == GNUNET_SCHEDULER_NO_TASK)
1199 sock->write_task = 1199 sock->write_task =
1200 GNUNET_SCHEDULER_add_write (tc->sched, 1200 GNUNET_SCHEDULER_add_write (tc->sched,
1201 GNUNET_NO, 1201 GNUNET_NO,
1202 GNUNET_SCHEDULER_PRIORITY_KEEP, 1202 GNUNET_SCHEDULER_PRIORITY_KEEP,
1203 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK, 1203 GNUNET_SCHEDULER_NO_TASK,
1204 GNUNET_TIME_absolute_get_remaining (sock->nth.transmit_timeout), 1204 GNUNET_TIME_absolute_get_remaining (sock->nth.transmit_timeout),
1205 sock->sock, &transmit_ready, sock); 1205 sock->sock, &transmit_ready, sock);
1206} 1206}
@@ -1233,7 +1233,7 @@ GNUNET_NETWORK_notify_transmit_ready (struct GNUNET_NETWORK_SocketHandle
1233 GNUNET_assert (sock->write_buffer_size >= size); 1233 GNUNET_assert (sock->write_buffer_size >= size);
1234 1234
1235 if ((sock->sock == -1) && 1235 if ((sock->sock == -1) &&
1236 (sock->connect_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK)) 1236 (sock->connect_task == GNUNET_SCHEDULER_NO_TASK))
1237 { 1237 {
1238#if DEBUG_NETWORK 1238#if DEBUG_NETWORK
1239 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1239 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1254,17 +1254,17 @@ GNUNET_NETWORK_notify_transmit_ready (struct GNUNET_NETWORK_SocketHandle
1254 sock->nth.timeout_task = GNUNET_SCHEDULER_add_delayed (sock->sched, 1254 sock->nth.timeout_task = GNUNET_SCHEDULER_add_delayed (sock->sched,
1255 GNUNET_NO, 1255 GNUNET_NO,
1256 GNUNET_SCHEDULER_PRIORITY_KEEP, 1256 GNUNET_SCHEDULER_PRIORITY_KEEP,
1257 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK, 1257 GNUNET_SCHEDULER_NO_TASK,
1258 timeout, 1258 timeout,
1259 &transmit_timeout, 1259 &transmit_timeout,
1260 sock); 1260 sock);
1261 if (sock->write_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1261 if (sock->write_task == GNUNET_SCHEDULER_NO_TASK)
1262 { 1262 {
1263 if (sock->connect_task == GNUNET_SCHEDULER_NO_PREREQUISITE_TASK) 1263 if (sock->connect_task == GNUNET_SCHEDULER_NO_TASK)
1264 sock->write_task = GNUNET_SCHEDULER_add_write (sock->sched, 1264 sock->write_task = GNUNET_SCHEDULER_add_write (sock->sched,
1265 GNUNET_NO, 1265 GNUNET_NO,
1266 GNUNET_SCHEDULER_PRIORITY_KEEP, 1266 GNUNET_SCHEDULER_PRIORITY_KEEP,
1267 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK, 1267 GNUNET_SCHEDULER_NO_TASK,
1268 GNUNET_TIME_absolute_get_remaining (sock->nth.transmit_timeout), 1268 GNUNET_TIME_absolute_get_remaining (sock->nth.transmit_timeout),
1269 sock->sock, 1269 sock->sock,
1270 &transmit_ready, sock); 1270 &transmit_ready, sock);
@@ -1290,7 +1290,7 @@ GNUNET_NETWORK_notify_transmit_ready_cancel (struct
1290{ 1290{
1291 GNUNET_assert (h->notify_ready != NULL); 1291 GNUNET_assert (h->notify_ready != NULL);
1292 GNUNET_SCHEDULER_cancel (h->sh->sched, h->timeout_task); 1292 GNUNET_SCHEDULER_cancel (h->sh->sched, h->timeout_task);
1293 h->timeout_task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK; 1293 h->timeout_task = GNUNET_SCHEDULER_NO_TASK;
1294 h->notify_ready = NULL; 1294 h->notify_ready = NULL;
1295} 1295}
1296 1296