static gboolean
meta1_dispatch_v2_PROPGET(struct gridd_reply_ctx_s *reply,
		struct meta1_backend_s *m1, gpointer ignored)
{
	GError *err;
	gchar **strv = NULL, **result = NULL;
	struct oio_url_s *url = metautils_message_extract_url (reply->request);
	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_get_container_properties(m1, url, strv, &result)))
		reply->send_error(0, err);
	else {
		reply->add_body(marshall_stringv_and_clean(&result));
		reply->send_reply(CODE_FINAL_OK, "OK");
	}

	if (strv) g_strfreev (strv);
	if (result) g_strfreev (result);
	oio_url_clean (url);
	return TRUE;
}
static gboolean
meta1_dispatch_v2_PROPGET(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);
	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 **keys = NULL;
	GError *err = STRV_decode_buffer(body, length, &keys);
	if (NULL != err)
		reply->send_error(CODE_BAD_REQUEST, err);
	else {
		gchar **result = NULL;
		err = meta1_backend_get_container_properties(m1, url, keys, &result);
		g_strfreev (keys);
		if (NULL != err)
			reply->send_error(0, err);
		else {
			reply->add_body(encode_and_clean(KV_encode_gba, result));
			reply->send_reply(CODE_FINAL_OK, "OK");
		}
	}

	oio_url_clean (url);
	return TRUE;
}