X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fdiscovery.c;h=ae2cf895d7d44c228b31319c3fa944d49189e7df;hb=771c923ba3d6e2122d822cd1ebd38373020dc422;hp=481b2f2872f22675d909924fea9b61d89f342189;hpb=93a7614d2aa368a9799d6e39c73542a3998e70bf;p=meshlink diff --git a/src/discovery.c b/src/discovery.c index 481b2f28..ae2cf895 100644 --- a/src/discovery.c +++ b/src/discovery.c @@ -221,7 +221,6 @@ static void discovery_resolve_callback(CattaSServiceResolver *resolver, CattaIfI pthread_mutex_lock(&(mesh->mesh_mutex)); node_name += 1; - node_fp += 1; meshlink_node_t *node = meshlink_get_node(mesh, node_name); @@ -349,7 +348,21 @@ static void *discovery_loop(void *userdata) { catta_set_log_function(discovery_log_cb); // create service type string - size_t servicetype_strlen = sizeof(MESHLINK_MDNS_SERVICE_TYPE) + strlen(mesh->appname) + 1; + char appname[strlen(mesh->appname) + 2]; + strcpy(appname, mesh->appname); + + for(char *p = appname; *p; p++) { + if(!isalnum(*p) && *p != '_' && *p != '-') { + *p = '_'; + } + } + + if(!appname[1]) { + appname[1] = '_'; + appname[2] = '\0'; + } + + size_t servicetype_strlen = sizeof(MESHLINK_MDNS_SERVICE_TYPE) + strlen(appname) + 1; mesh->catta_servicetype = malloc(servicetype_strlen); if(mesh->catta_servicetype == NULL) { @@ -357,7 +370,7 @@ static void *discovery_loop(void *userdata) { goto fail; } - snprintf(mesh->catta_servicetype, servicetype_strlen, MESHLINK_MDNS_SERVICE_TYPE, mesh->appname); + snprintf(mesh->catta_servicetype, servicetype_strlen, MESHLINK_MDNS_SERVICE_TYPE, appname); // Allocate discovery loop object if(!(mesh->catta_poll = catta_simple_poll_new())) {