diff options
Diffstat (limited to 'src/fragmentation/fragmentation_new.c')
-rw-r--r-- | src/fragmentation/fragmentation_new.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/fragmentation/fragmentation_new.c b/src/fragmentation/fragmentation_new.c index 6a2747e4d..17b4bb0ab 100644 --- a/src/fragmentation/fragmentation_new.c +++ b/src/fragmentation/fragmentation_new.c | |||
@@ -138,12 +138,14 @@ transmit_next (void *cls, | |||
138 | fsize = size % (fc->mtu - sizeof (struct FragmentHeader)) + sizeof (struct FragmentHeader); | 138 | fsize = size % (fc->mtu - sizeof (struct FragmentHeader)) + sizeof (struct FragmentHeader); |
139 | else | 139 | else |
140 | fsize = fc->mtu; | 140 | fsize = fc->mtu; |
141 | delay = GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, | 141 | if (fc->tracker != NULL) |
142 | fsize); | 142 | delay = GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, |
143 | fsize); | ||
144 | else | ||
145 | delay = GNUNET_TIME_UNIT_ZERO; | ||
143 | if (delay.rel_value > 0) | 146 | if (delay.rel_value > 0) |
144 | { | 147 | { |
145 | fc->task = GNUNET_SCHEDULER_add_delayed (GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, | 148 | fc->task = GNUNET_SCHEDULER_add_delayed (delay, |
146 | fc->mtu), | ||
147 | &transmit_next, | 149 | &transmit_next, |
148 | fc); | 150 | fc); |
149 | return; | 151 | return; |
@@ -163,7 +165,8 @@ transmit_next (void *cls, | |||
163 | &mbuf[bit * (fc->mtu - sizeof (struct FragmentHeader))], | 165 | &mbuf[bit * (fc->mtu - sizeof (struct FragmentHeader))], |
164 | fsize - sizeof (struct FragmentHeader)); | 166 | fsize - sizeof (struct FragmentHeader)); |
165 | fc->proc (fc->proc_cls, &fh->header); | 167 | fc->proc (fc->proc_cls, &fh->header); |
166 | GNUNET_BANDWIDTH_tracker_consume (fc->tracker, fsize); | 168 | if (NULL != fc->tracker) |
169 | GNUNET_BANDWIDTH_tracker_consume (fc->tracker, fsize); | ||
167 | GNUNET_STATISTICS_update (fc->stats, | 170 | GNUNET_STATISTICS_update (fc->stats, |
168 | _("Fragments transmitted"), | 171 | _("Fragments transmitted"), |
169 | 1, GNUNET_NO); | 172 | 1, GNUNET_NO); |
@@ -179,8 +182,11 @@ transmit_next (void *cls, | |||
179 | fsize = size % (fc->mtu - sizeof (struct FragmentHeader)); | 182 | fsize = size % (fc->mtu - sizeof (struct FragmentHeader)); |
180 | else | 183 | else |
181 | fsize = fc->mtu; | 184 | fsize = fc->mtu; |
182 | delay = GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, | 185 | if (NULL != fc->tracker) |
183 | fsize); | 186 | delay = GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, |
187 | fsize); | ||
188 | else | ||
189 | delay = GNUNET_TIME_UNIT_ZERO; | ||
184 | if (wrap) | 190 | if (wrap) |
185 | { | 191 | { |
186 | /* full round transmitted wait 2x delay for ACK before going again */ | 192 | /* full round transmitted wait 2x delay for ACK before going again */ |
@@ -189,8 +195,7 @@ transmit_next (void *cls, | |||
189 | fc->last_round = GNUNET_TIME_absolute_get (); | 195 | fc->last_round = GNUNET_TIME_absolute_get (); |
190 | fc->wack = GNUNET_YES; | 196 | fc->wack = GNUNET_YES; |
191 | } | 197 | } |
192 | fc->task = GNUNET_SCHEDULER_add_delayed (GNUNET_BANDWIDTH_tracker_get_delay (fc->tracker, | 198 | fc->task = GNUNET_SCHEDULER_add_delayed (delay, |
193 | fc->mtu), | ||
194 | &transmit_next, | 199 | &transmit_next, |
195 | fc); | 200 | fc); |
196 | } | 201 | } |