static GError * _resolve_m1_through_one_m0(const gchar *m0, const guint8 *prefix, gchar ***result) { GError *err = NULL; struct addr_info_s ai; GRID_TRACE2("%s(%s,%02X%02X)", __FUNCTION__, m0, prefix[0], prefix[1]); meta1_strurl_get_address(m0, &ai); do { GSList *lmap = meta0_remote_get_meta1_one(&ai, _timeout(&rc_resolver_timeout_m0, 30.0), prefix, &err); if (!lmap) { if (err) return err; return NEWERROR(500, "No meta1 found"); } else { *result = _m0list_to_urlv(lmap); g_slist_foreach(lmap, meta0_info_gclean, NULL); g_slist_free(lmap); err = NULL; } } while (0); return err; }
static GError * _resolve_service_through_one_m1(const gchar *m1, struct hc_url_s *u, const gchar *s, gchar ***result) { GError *err = NULL; struct addr_info_s ai; GRID_TRACE2("%s(%s,%s,%s)", __FUNCTION__, m1, hc_url_get(u, HCURL_WHOLE), s); meta1_strurl_get_address(m1, &ai); *result = meta1v2_remote_list_reference_services(&ai, &err, u, s); EXTRA_ASSERT((err!=NULL) ^ (*result!=NULL)); return err; }