PERFORCE change 124969 for review
Fredrik Lindberg
fli at FreeBSD.org
Thu Aug 9 12:16:31 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=124969
Change 124969 by fli at fli_nexus on 2007/08/09 19:15:48
Pass user suplied name to mdns_name_encode() instead,
this allows the use of ip-addresses as names, they will
be converted to the appropriate format automatically.
Affected files ...
.. //depot/projects/soc2007/fli-mdns_sd/mdnsd/clisrv.c#4 edit
Differences ...
==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/clisrv.c#4 (text+ko) ====
@@ -281,6 +281,7 @@
TAILQ_FOREACH_SAFE(cscq, &csc->csc_queries, cscq_next, cscq2) {
query_dereg(cscq->cscq_q, &cscq->cscq_qs, cscq);
TAILQ_REMOVE(&csc->csc_queries, cscq, cscq_next);
+ free(cscq->cscq_qs.q_name);
obj_free(OBJ_CSCQ, cscq);
}
@@ -472,6 +473,7 @@
int error, retval = 0;
struct csc_query cscq;
wchar_t name[MDNS_RECORD_LEN+1];
+ char *nam;
if (len < sizeof(struct mipc_query))
return (MIE_IVAL);
@@ -483,8 +485,9 @@
wp = (wchar_t *)(buf + sizeof(struct mipc_query));
memcpy(name, wp, miq->miq_len * sizeof(wchar_t));
name[miq->miq_len] = L'\0';
- error = utf8_encode(name, cscq.cscq_qs.name, MDNS_RECORD_LEN);
- if (error < 0)
+
+ nam = mdns_name_encode(name, MDNS_RECORD_LEN, MDNS_ENC_AUTO);
+ if (nam == NULL)
return (MIE_IVAL);
dprintf(DEBUG_CS,"Query message class=%d, type=%d, name=%ls, "
@@ -492,7 +495,7 @@
miq->miq_type, name, miq->miq_cmd, miq->miq_fam,
miq->miq_ifidx, miq->miq_timeout);
- cscq.cscq_qs.q_name = cscq.cscq_qs.name;
+ mdns_qset_name(&cscq.cscq_qs, nam);
cscq.cscq_qs.q_type = miq->miq_type;
cscq.cscq_qs.q_class = miq->miq_class;
cscq.cscq_id = mih->mih_id;
@@ -1535,6 +1538,7 @@
send_error(csc, cscq->cscq_id, MIE_TOUT);
+ free(cscq->cscq_qs.q_name);
obj_free(OBJ_CSCQ, cscq);
MTX_UNLOCK(csc, csc_mtx);
return;
@@ -1661,6 +1665,7 @@
MDNS_INIT_ASSERT(mif, mif_magic);
query_dereg(&mif->mif_q, &cscq->cscq_qs, cscq2);
TAILQ_REMOVE(&csc->csc_queries, cscq2, cscq_next);
+ free(cscq->cscq_qs.q_name);
obj_free(OBJ_CSCQ, cscq2);
}
else {
@@ -1682,6 +1687,7 @@
query_dereg(&mif->mif_q, &cscq->cscq_qs, cscq2);
TAILQ_REMOVE(&csc->csc_queries, cscq2,
cscq_next);
+ free(cscq->cscq_qs.q_name);
obj_free(OBJ_CSCQ, cscq2);
}
}
More information about the p4-projects
mailing list