X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol.c;h=20f66447c2a8ddc79f9a284b5522aa8513b1615f;hp=97e35e3a5b340c3d2280f8594ce8a40d1eac601a;hb=20301888b7a0a206119d2cfc48ccf1a667bb4add;hpb=85adeef21275633b78a234b2660cbe3bc9dd2c33 diff --git a/src/protocol.c b/src/protocol.c index 97e35e3a..20f66447 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: protocol.c,v 1.28.4.40 2000/10/15 00:59:35 guus Exp $ + $Id: protocol.c,v 1.28.4.42 2000/10/16 19:04:47 guus Exp $ */ #include "config.h" @@ -155,14 +155,16 @@ cp int send_id(conn_list_t *cl) { cp - return send_request(cl, "%d %s %d %lx", ID, myself->name, myself->protocol_version, myself->options); + cl->allow_request = CHALLENGE; +cp + return send_request(cl, "%d %s %d %lx %hd", ID, myself->name, myself->protocol_version, myself->options, myself->port); } int id_h(conn_list_t *cl) { conn_list_t *old; cp - if(sscanf(cl->buffer, "%*d %as %d %lx", &cl->name, &cl->protocol_version, &cl->options) != 3) + if(sscanf(cl->buffer, "%*d %as %d %lx %hd", &cl->name, &cl->protocol_version, &cl->options, &cl->port) != 4) { syslog(LOG_ERR, _("Got bad ID from %s"), cl->hostname); return -1; @@ -187,7 +189,7 @@ cp /* Load information about peer */ - if(!read_host_config(cl)) + if(read_host_config(cl)) { syslog(LOG_ERR, _("Peer %s had unknown identity (%s)"), cl->hostname, cl->name); return -1; @@ -211,10 +213,6 @@ cp return 0; } } - - /* Send a challenge to verify the identity */ - - cl->allow_request = CHAL_REPLY; cp return send_challenge(cl); } @@ -313,7 +311,7 @@ int chal_reply_h(conn_list_t *cl) char *hishash; char myhash[SHA_DIGEST_LENGTH]; cp - if(sscanf(cl->buffer, "%*d %as", &hishash) != 2) + if(sscanf(cl->buffer, "%*d %as", &hishash) != 1) { syslog(LOG_ERR, _("Got bad CHAL_REPLY from %s (%s)"), cl->name, cl->hostname); free(hishash); @@ -339,7 +337,7 @@ cp /* Verify the incoming hash with the calculated hash */ - if(!memcmp(hishash, myhash, SHA_DIGEST_LENGTH)) + if(memcmp(hishash, myhash, SHA_DIGEST_LENGTH)) { syslog(LOG_ERR, _("Intruder: wrong challenge reply from %s (%s)"), cl->name, cl->hostname); free(hishash); @@ -354,19 +352,15 @@ cp */ cp if(cl->status.outgoing) - { - cl->allow_request = ACK; return send_ack(cl); - } else - { - cl->allow_request = CHALLENGE; return send_id(cl); - } } int send_ack(conn_list_t *cl) { +cp + cl->allow_request = ACK; cp return send_request(cl, "%d", ACK); } @@ -1051,11 +1045,11 @@ char (*request_name[]) = { /* Status strings */ char (*status_text[]) = { - "FIXME: status text", + "Warning", }; /* Error strings */ char (*error_text[]) = { - "FIXME: error text", + "Error", };