aboutsummaryrefslogtreecommitdiff
path: root/src/fragmentation/fragmentation_new.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fragmentation/fragmentation_new.c')
-rw-r--r--src/fragmentation/fragmentation_new.c23
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}