Changeset bd1a84 for src/iodine.c
- Timestamp:
- 01/10/09 20:30:55 (4 years ago)
- Branches:
- master
- Children:
- 78d324
- Parents:
- df93da
- git-author:
- Erik Ekman <yarrick@…> (01/10/09 20:30:55)
- git-committer:
- Erik Ekman <erik@…> (02/04/12 20:33:59)
- File:
-
- 1 edited
-
src/iodine.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/iodine.c
r2bccb3 rbd1a84 411 411 412 412 static void 413 send_fragsize_probe(int fd, int fragsize) 414 { 415 char probedata[256]; 416 char buf[4096]; 417 418 /* build a large query domain which is random and maximum size */ 419 memset(probedata, MIN(1, rand_seed & 0xff), sizeof(probedata)); 420 probedata[1] = MIN(1, (rand_seed >> 8) & 0xff); 421 rand_seed++; 422 build_hostname(buf + 4, sizeof(buf) - 4, probedata, sizeof(probedata), topdomain, dataenc); 423 424 fragsize &= 2047; 425 426 buf[0] = 'r'; /* Probe downstream fragsize packet */ 427 buf[1] = b32_5to8((userid << 1) | (fragsize & 1024)); 428 buf[2] = b32_5to8((fragsize >> 5) & 31); 429 buf[3] = b32_5to8(fragsize & 31); 430 431 send_query(fd, buf); 432 } 433 434 static void 413 435 send_set_downstream_fragsize(int fd, int fragsize) 414 436 { … … 678 700 autodetect_max_fragsize: 679 701 if (autodetect_frag_size) { 680 printf("Autoprobing max downstream fragment size...\n"); 681 /* TODO */ 702 int proposed_fragsize = 768; 703 int range = 768; 704 max_downstream_frag_size = 0; 705 printf("Autoprobing max downstream fragment size... (skip with -m fragsize)\n"); 706 while (range >= 8 || !max_downstream_frag_size) { 707 for (i=0; running && i<3 ;i++) { 708 tv.tv_sec = 1; 709 tv.tv_usec = 0; 710 send_fragsize_probe(dns_fd, proposed_fragsize); 711 712 FD_ZERO(&fds); 713 FD_SET(dns_fd, &fds); 714 715 r = select(dns_fd + 1, &fds, NULL, NULL, &tv); 716 717 if(r > 0) { 718 read = read_dns(dns_fd, in, sizeof(in)); 719 720 if (read > 0) { 721 /* We got a reply */ 722 int acked_fragsize = ((in[0] & 0xff) << 8) | (in[1] & 0xff); 723 if (acked_fragsize == proposed_fragsize) { 724 printf("%d ok.. ", acked_fragsize); 725 fflush(stdout); 726 max_downstream_frag_size = acked_fragsize; 727 range >>= 1; 728 proposed_fragsize += range; 729 continue; 730 } 731 } 732 } 733 } 734 printf("%d not ok.. ", proposed_fragsize); 735 fflush(stdout); 736 range >>= 1; 737 proposed_fragsize -= range; 738 } 739 printf("will use %d\n", max_downstream_frag_size); 682 740 } 683 741 printf("Setting downstream fragment size to max %d...\n", max_downstream_frag_size);
Note: See TracChangeset
for help on using the changeset viewer.
