diff --git a/commandline.c b/commandline.c index ca59f26e..5db4a4a1 100644 --- a/commandline.c +++ b/commandline.c @@ -426,8 +426,10 @@ int app_dna_lookup(int argc, const char *const *argv, struct command_line_option if (create_serval_instance_dir() == -1) return -1; - int sid_count=0; - unsigned char sids[128][SID_SIZE]; + int uri_count=0; +#define MAXREPLIES 256 +#define MAXURILEN 256 + char uris[MAXREPLIES][MAXURILEN]; const char *did; if (cli_arg(argc, argv, o, "did", &did, NULL, "*") == -1) @@ -484,19 +486,28 @@ int app_dna_lookup(int argc, const char *const *argv, struct command_line_option WHYF(" Error message: %s", mdp.error.message); } else if ((rx.packetTypeAndFlags&MDP_TYPE_MASK)==MDP_TX) { - /* Display match unless it is a duplicate. - XXX - For wildcard searches, each sid will only show up once. */ - int i; - for(i=0;iprivate_key_len>64) /* skip excessively long DID records */ continue; - /* copy SID out into source address of frame */ /* and null-terminated DID */ - bcopy(&keyring->contexts[cn]->identities[in]->keypairs[0] - ->public_key[0],&mdp->out.src.sid[0],SID_SIZE); - bcopy(keyring->contexts[cn]->identities[in]->keypairs[kp] - ->private_key,&mdp->out.payload[0], - keyring->contexts[cn]->identities[in]->keypairs[kp] - ->private_key_len); - bcopy(keyring->contexts[cn]->identities[in]->keypairs[kp] - ->public_key,&mdp->out.payload[keyring - ->contexts[cn] - ->identities[in] - ->keypairs[kp] - ->private_key_len], - keyring->contexts[cn]->identities[in]->keypairs[kp] - ->private_key_len); - /* set length */ - mdp->out.payload_length= + unsigned char *unpackedDid= keyring->contexts[cn]->identities[in]->keypairs[kp] - ->private_key_len - +keyring->contexts[cn]->identities[in]->keypairs[kp] - ->public_key_len; + ->private_key; + unsigned char *packedSid= + keyring->contexts[cn]->identities[in]->keypairs[0] + ->public_key; + char *name= + (char *)keyring->contexts[cn]->identities[in]->keypairs[kp] + ->public_key; + /* copy SID out into source address of frame */ + bcopy(packedSid,&mdp->out.src.sid[0],SID_SIZE); + /* and build reply as did\nname\nURI */ + snprintf((char *)&mdp->out.payload[0],512,"%s\n%s\nsid://%s/%s", + unpackedDid,name,overlay_render_sid(packedSid), + unpackedDid); + mdp->out.payload_length=strlen((char *)mdp->out.payload)+1; + /* mark as outgoing MDP message */ mdp->packetTypeAndFlags&=MDP_FLAG_MASK; mdp->packetTypeAndFlags|=MDP_TX;