static gboolean
meta1_dispatch_v2_PROPSET(struct gridd_reply_ctx_s *reply,
		struct meta1_backend_s *m1, gpointer ignored UNUSED)
{
	struct oio_url_s *url = metautils_message_extract_url (reply->request);
	gboolean flush = metautils_message_extract_flag(reply->request, NAME_MSGKEY_FLUSH, FALSE);
	reply->subject("%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID));

	gsize length = 0;
	void *body = metautils_message_get_BODY(reply->request, &length);
	gchar **props = NULL;
	GError *err = KV_decode_buffer(body, length, &props);
	if (NULL != err)
		reply->send_error(CODE_BAD_REQUEST, err);
	else {
		err = meta1_backend_set_container_properties(m1, url, props, flush);
		g_strfreev (props);
		if (NULL != err)
			reply->send_error(0, err);
		else
			reply->send_reply(CODE_FINAL_OK, "OK");
	}

	oio_url_clean (url);
	return TRUE;
}
static gboolean
meta1_dispatch_v2_PROPSET(struct gridd_reply_ctx_s *reply,
		struct meta1_backend_s *m1, gpointer ignored)
{
	GError *err;
	gchar **strv = NULL;
	struct oio_url_s *url = metautils_message_extract_url (reply->request);
	gboolean flush = metautils_message_extract_flag(reply->request,
			NAME_MSGKEY_FLUSH, FALSE);
	reply->subject("%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID));
	(void) ignored;

	if (NULL != (err = metautils_message_extract_body_strv(reply->request, &strv)))
		reply->send_error(CODE_BAD_REQUEST, err);
	else if (NULL != (err = meta1_backend_set_container_properties(m1, url, strv, flush)))
		reply->send_error(0, err);
	else
		reply->send_reply(CODE_FINAL_OK, "OK");

	if (strv) g_strfreev (strv);
	oio_url_clean (url);
	return TRUE;
}