Changeset de976d


Ignore:
Timestamp:
06/14/09 16:01:48 (3 years ago)
Author:
Erik Ekman <yarrick@…>
Branches:
master
Children:
f20b3c
Parents:
1235cb
git-author:
Erik Ekman <yarrick@…> (06/14/09 16:01:48)
git-committer:
Erik Ekman <erik@…> (02/04/12 20:34:02)
Message:

#36 client now reads raw reply

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/iodine.c

    rc92ed9 rde976d  
    679679        int i; 
    680680        int r; 
    681         int read; 
     681        int len; 
    682682        unsigned remoteaddr = 0; 
    683683        struct in_addr server; 
     
    697697 
    698698                if(r > 0) { 
    699                         read = read_dns(dns_fd, in, sizeof(in)); 
    700                         if (read == 5 && in[0] == 'I') { 
     699                        len = read_dns(dns_fd, in, sizeof(in)); 
     700                        if (len == 5 && in[0] == 'I') { 
    701701                                /* Received IP address */ 
    702702                                remoteaddr = (in[1] & 0xff); 
     
    720720                return 1; 
    721721        } 
    722         fprintf(stderr, " at %s", inet_ntoa(server)); 
     722        fprintf(stderr, " at %s: ", inet_ntoa(server)); 
    723723        fflush(stderr); 
    724724 
     
    744744 
    745745                if(r > 0) { 
    746                         read = read_dns(dns_fd, in, sizeof(in)); 
    747                 } else { 
    748                         fprintf(stderr, "."); 
    749                         fflush(stderr); 
    750                 } 
    751         } 
    752          
    753  
    754         /* TODO */ 
    755         fprintf(stderr, ": not implemented\n"); 
     746                        len = read(dns_fd, in, sizeof(in)); 
     747                        if (len >= (17 + RAW_HDR_LEN)) { 
     748                                char hash[16]; 
     749                                login_calculate(hash, 16, password, seed - 1); 
     750                                if (memcmp(in, raw_header, RAW_HDR_IDENT_LEN) == 0 
     751                                        && in[RAW_HDR_CMD] == RAW_HDR_CMD_LOGIN  
     752                                        && memcmp(&in[RAW_HDR_LEN], hash, sizeof(hash)) == 0 
     753                                        && in[16 + RAW_HDR_LEN] ==  userid) { 
     754 
     755                                        fprintf(stderr, "OK\n"); 
     756                                        return 0; 
     757                                } 
     758                        } 
     759                } 
     760                fprintf(stderr, "."); 
     761                fflush(stderr); 
     762        } 
     763         
     764        fprintf(stderr, "failed\n"); 
    756765        return 1; 
    757         /* TODO and then return 0 on success */ 
    758766} 
    759767 
Note: See TracChangeset for help on using the changeset viewer.