Date: Thu, 9 Aug 2007 19:16:30 GMT From: Fredrik Lindberg <fli@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 124969 for review Message-ID: <200708091916.l79JGUSG087127@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=124969 Change 124969 by fli@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); } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708091916.l79JGUSG087127>