… | |
… | |
1240 | NEXT (r->timeout); |
1240 | NEXT (r->timeout); |
1241 | } |
1241 | } |
1242 | |
1242 | |
1243 | if (!send) |
1243 | if (!send) |
1244 | { |
1244 | { |
1245 | if (last_sent + send_interval <= NOW) |
1245 | // generate a new packet, if wise |
|
|
1246 | |
|
|
1247 | if (!established) |
1246 | { |
1248 | { |
1247 | // generate a new packet, if wise |
1249 | if (vpn->dns_sndpq.empty ()) |
1248 | |
|
|
1249 | if (!established) |
|
|
1250 | { |
1250 | { |
1251 | if (vpn->dns_sndpq.empty ()) |
|
|
1252 | { |
|
|
1253 | send = new dns_snd (this); |
1251 | send = new dns_snd (this); |
1254 | |
1252 | |
1255 | cfg.reset (THISNODE->id); |
1253 | cfg.reset (THISNODE->id); |
1256 | send->gen_syn_req (); |
1254 | send->gen_syn_req (); |
1257 | } |
|
|
1258 | } |
1255 | } |
|
|
1256 | } |
1259 | else if (vpn->dns_sndpq.size () < MAX_OUTSTANDING |
1257 | else if (vpn->dns_sndpq.size () < MAX_OUTSTANDING |
1260 | && !SEQNO_EQ (rcvseq, sndseq - (MAX_WINDOW - 1))) |
1258 | && !SEQNO_EQ (rcvseq, sndseq - (MAX_WINDOW - 1))) |
|
|
1259 | { |
|
|
1260 | if (last_sent + send_interval <= NOW) |
1261 | { |
1261 | { |
1262 | //printf ("sending data request etc.\n"); //D |
1262 | //printf ("sending data request etc.\n"); //D |
1263 | if (!snddq.empty () || last_received + 1. > NOW) |
1263 | if (!snddq.empty () || last_received + 1. > NOW) |
1264 | { |
1264 | { |
1265 | poll_interval = send_interval; |
1265 | poll_interval = send_interval; |
… | |
… | |
1270 | send->gen_stream_req (sndseq, snddq); |
1270 | send->gen_stream_req (sndseq, snddq); |
1271 | send->timeout = NOW + min_latency * 8.; |
1271 | send->timeout = NOW + min_latency * 8.; |
1272 | |
1272 | |
1273 | sndseq = (sndseq + 1) & SEQNO_MASK; |
1273 | sndseq = (sndseq + 1) & SEQNO_MASK; |
1274 | } |
1274 | } |
1275 | |
1275 | else |
1276 | if (send) |
1276 | NEXT (last_sent + send_interval); |
1277 | vpn->dns_sndpq.push_back (send); |
|
|
1278 | } |
1277 | } |
1279 | else |
1278 | |
1280 | NEXT (last_sent + send_interval); |
1279 | if (send) |
|
|
1280 | vpn->dns_sndpq.push_back (send); |
1281 | } |
1281 | } |
1282 | |
1282 | |
1283 | if (send) |
1283 | if (send) |
1284 | { |
1284 | { |
1285 | last_sent = NOW; |
1285 | last_sent = NOW; |
… | |
… | |
1292 | poll_interval, send_interval, next - NOW, |
1292 | poll_interval, send_interval, next - NOW, |
1293 | vpn->dns_sndpq.size (), snddq.size (), |
1293 | vpn->dns_sndpq.size (), snddq.size (), |
1294 | rcvpq.size ()); |
1294 | rcvpq.size ()); |
1295 | |
1295 | |
1296 | // TODO: no idea when this happens, but when next < NOW, we have a problem |
1296 | // TODO: no idea when this happens, but when next < NOW, we have a problem |
1297 | if (next < NOW + 0.0001) |
1297 | if (next < NOW + 0.001) |
1298 | next = NOW + 0.1; |
1298 | next = NOW + 0.1; |
1299 | |
1299 | |
1300 | w.start (next); |
1300 | w.start (next); |
1301 | } |
1301 | } |
1302 | |
1302 | |