X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=12e81e4c7063c4d32096c22210536dddc6f27075;hb=9cde0d32cf209388cc59b06b7dcb0c3432f97da5;hp=d26b0f651f3dde6c374a7dcd49784d998bb6efde;hpb=53522b1c11222273c7b41f72b374e759d13b2165;p=meshlink diff --git a/src/protocol_auth.c b/src/protocol_auth.c index d26b0f65..12e81e4c 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -205,7 +205,7 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat config_t config; - if(!invitation_read(mesh, cookie, &config)) { + if(!invitation_read(mesh, "current", cookie, &config, mesh->config_key)) { logger(mesh, MESHLINK_ERROR, "Error while trying to read invitation file\n"); return false; } @@ -238,6 +238,9 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat // Send the node the contents of the invitation file sptps_send_record(&c->sptps, 0, config.buf, config.len); + config_free(&config); + free(submesh_name); + c->status.invitation_used = true; logger(mesh, MESHLINK_INFO, "Invitation %s successfully sent to %s", cookie, c->name); @@ -245,6 +248,9 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat } bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { + assert(request); + assert(*request); + char name[MAX_STRING_SIZE]; if(sscanf(request, "%*d " MAX_STRING " %d.%d", name, &c->protocol_major, &c->protocol_minor) < 2) { @@ -326,7 +332,7 @@ bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { } if(n->status.blacklisted) { - logger(mesh, MESHLINK_EPEER, "Peer %s is blacklisted", c->name); + logger(mesh, MESHLINK_WARNING, "Peer %s is blacklisted", c->name); return false; } @@ -368,14 +374,7 @@ bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { } bool send_ack(meshlink_handle_t *mesh, connection_t *c) { - - /* Check some options */ - - if(mesh->self->options & OPTION_PMTU_DISCOVERY) { - c->options |= OPTION_PMTU_DISCOVERY; - } - - return send_request(mesh, c, NULL, "%d %s %d %x", ACK, mesh->myport, mesh->devclass, (c->options & 0xffffff) | (PROT_MINOR << 24)); + return send_request(mesh, c, NULL, "%d %s %d %x", ACK, mesh->myport, mesh->devclass, OPTION_PMTU_DISCOVERY | (PROT_MINOR << 24)); } static void send_everything(meshlink_handle_t *mesh, connection_t *c) { @@ -389,6 +388,9 @@ static void send_everything(meshlink_handle_t *mesh, connection_t *c) { } bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { + assert(request); + assert(*request); + char hisport[MAX_STRING_SIZE]; int devclass; uint32_t options; @@ -399,7 +401,7 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { return false; } - if(devclass < 0 || devclass > _DEV_CLASS_MAX) { + if(devclass < 0 || devclass >= DEV_CLASS_COUNT) { logger(mesh, MESHLINK_ERROR, "Got bad %s from %s: %s", "ACK", c->name, "devclass invalid"); return false; } @@ -436,18 +438,11 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { n->devclass = devclass; n->status.dirty = true; - n->last_successfull_connection = time(NULL); + n->last_successfull_connection = mesh->loop.now.tv_sec; n->connection = c; c->node = n; - if(!(c->options & options & OPTION_PMTU_DISCOVERY)) { - c->options &= ~OPTION_PMTU_DISCOVERY; - options &= ~OPTION_PMTU_DISCOVERY; - } - - c->options |= options; - /* Activate this connection */ c->allow_request = ALL; @@ -461,15 +456,14 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { /* Create an edge_t for this connection */ - assert(devclass >= 0 && devclass <= _DEV_CLASS_MAX); + assert(devclass >= 0 && devclass < DEV_CLASS_COUNT); c->edge = new_edge(); c->edge->from = mesh->self; c->edge->to = n; sockaddrcpy_setport(&c->edge->address, &c->address, atoi(hisport)); - c->edge->weight = dev_class_traits[devclass].edge_weight; + c->edge->weight = mesh->dev_class_traits[devclass].edge_weight; c->edge->connection = c; - c->edge->options = c->options; edge_add(mesh, c->edge);