+ outgoing->state = OUTGOING_CANONICAL_RESOLVE;
+ }
+
+ if(outgoing->state == OUTGOING_CANONICAL_RESOLVE) {
+ node_t *n = outgoing->node;
+
+ if(n->canonical_address) {
+ char *address = xstrdup(n->canonical_address);
+ char *port = strchr(address, ' ');
+
+ if(port) {
+ *port++ = 0;
+ port = xstrdup(port);
+ adns_queue(mesh, address, port, canonical_resolve_cb, outgoing->node, 2);
+ return false;
+ } else {
+ logger(mesh, MESHLINK_ERROR, "Canonical address for %s is missing port number", n->name);
+ free(address);
+ outgoing->state = OUTGOING_RECENT;
+ }
+
+ } else {
+ outgoing->state = OUTGOING_RECENT;
+ }