Changeset 3eef14
- Timestamp:
- 06/11/09 22:23:05 (3 years ago)
- Branches:
- master
- Children:
- 950c08
- Parents:
- 27fc03
- git-author:
- Erik Ekman <yarrick@…> (06/11/09 22:23:05)
- git-committer:
- Erik Ekman <erik@…> (02/04/12 20:34:02)
- File:
-
- 1 edited
-
src/iodine.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/iodine.c
r4bbf4e r3eef14 472 472 473 473 send_packet(fd, 'V', data, sizeof(data)); 474 } 475 476 static void 477 send_ip_request(int fd, int userid) 478 { 479 char buf[512] = "I_."; 480 buf[1] = b32_5to8(userid); 481 482 strncat(buf, topdomain, 512 - strlen(buf)); 483 send_query(fd, buf); 474 484 } 475 485 … … 621 631 warnx("couldn't login to server"); 622 632 return 1; 633 } 634 635 static int 636 handshake_raw_udp(int dns_fd) 637 { 638 struct timeval tv; 639 char in[4096]; 640 fd_set fds; 641 int i; 642 int r; 643 int read; 644 unsigned remoteaddr = 0; 645 struct in_addr server; 646 647 fprintf(stderr, "Testing raw UDP data to the server"); 648 fflush(stderr); 649 for (i=0; running && i<3 ;i++) { 650 tv.tv_sec = i + 1; 651 tv.tv_usec = 0; 652 653 send_ip_request(dns_fd, userid); 654 655 FD_ZERO(&fds); 656 FD_SET(dns_fd, &fds); 657 658 r = select(dns_fd + 1, &fds, NULL, NULL, &tv); 659 660 if(r > 0) { 661 read = read_dns(dns_fd, in, sizeof(in)); 662 if (read == 5 && in[0] == 'I') { 663 /* Received IP address */ 664 remoteaddr = (in[1] & 0xff); 665 remoteaddr <<= 8; 666 remoteaddr |= (in[2] & 0xff); 667 remoteaddr <<= 8; 668 remoteaddr |= (in[3] & 0xff); 669 remoteaddr <<= 8; 670 remoteaddr |= (in[4] & 0xff); 671 server.s_addr = ntohl(remoteaddr); 672 break; 673 } 674 } else { 675 fprintf(stderr, "."); 676 fflush(stderr); 677 } 678 } 679 680 if (!remoteaddr) { 681 fprintf(stderr, " failed to get IP.\n"); 682 return 1; 683 } 684 fprintf(stderr, " at %s", inet_ntoa(server)); 685 fflush(stderr); 686 687 /* TODO do login against port 53 on remote server 688 * based on the old seed. If reply received, 689 * switch to raw udp mode */ 690 fprintf(stderr, ": not implemented\n"); 691 return 1; 692 /* TODO and then return 0 on success */ 623 693 } 624 694 … … 871 941 return r; 872 942 } 943 944 handshake_raw_udp(dns_fd); 873 945 874 946 handshake_case_check(dns_fd);
Note: See TracChangeset
for help on using the changeset viewer.
