Skip site navigation (1)Skip section navigation (2)
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>