aboutsummaryrefslogtreecommitdiff
path: root/src/service/gns/gnunet-service-gns_resolver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/gns/gnunet-service-gns_resolver.c')
-rw-r--r--src/service/gns/gnunet-service-gns_resolver.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/service/gns/gnunet-service-gns_resolver.c b/src/service/gns/gnunet-service-gns_resolver.c
index aa0189b15..edef6a8ab 100644
--- a/src/service/gns/gnunet-service-gns_resolver.c
+++ b/src/service/gns/gnunet-service-gns_resolver.c
@@ -1085,6 +1085,22 @@ dns_result_parser (void *cls,
1085 rd[i - skip].data_size = buf_off - buf_start; 1085 rd[i - skip].data_size = buf_off - buf_start;
1086 rd[i - skip].data = &buf[buf_start]; 1086 rd[i - skip].data = &buf[buf_start];
1087 break; 1087 break;
1088
1089 case GNUNET_DNSPARSER_TYPE_URI:
1090 buf_start = buf_off;
1091 if (GNUNET_OK !=
1092 GNUNET_DNSPARSER_builder_add_uri (buf,
1093 sizeof(buf),
1094 &buf_off,
1095 rec->data.uri))
1096 {
1097 GNUNET_break (0);
1098 skip++;
1099 continue;
1100 }
1101 rd[i - skip].data_size = buf_off - buf_start;
1102 rd[i - skip].data = &buf[buf_start];
1103 break;
1088 1104
1089 default: 1105 default:
1090 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1106 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -2170,6 +2186,45 @@ handle_gns_resolution_result (void *cls,
2170 } 2186 }
2171 break; 2187 break;
2172 2188
2189 case GNUNET_DNSPARSER_TYPE_URI:
2190 {
2191 struct GNUNET_DNSPARSER_UriRecord *uri;
2192
2193 off = 0;
2194 uri = GNUNET_DNSPARSER_parse_uri (rd[i].data,
2195 rd[i].data_size,
2196 &off);
2197 if ((NULL == uri) ||
2198 (off != rd[i].data_size))
2199 {
2200 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2201 _ ("Failed to deserialize URI record with target\n"));
2202 GNUNET_break_op (0); /* record not well-formed */
2203 }
2204 else
2205 {
2206 scratch_start = scratch_off;
2207 if (GNUNET_OK !=
2208 GNUNET_DNSPARSER_builder_add_uri (scratch,
2209 sizeof(scratch),
2210 &scratch_off,
2211 uri))
2212 {
2213 GNUNET_break (0);
2214 }
2215 else
2216 {
2217 GNUNET_assert (rd_off < rd_count);
2218 rd_new[rd_off].data = &scratch[scratch_start];
2219 rd_new[rd_off].data_size = scratch_off - scratch_start;
2220 rd_off++;
2221 }
2222 }
2223 if (NULL != uri)
2224 GNUNET_DNSPARSER_free_uri (uri);
2225 }
2226 break;
2227
2173 case GNUNET_GNSRECORD_TYPE_PKEY: 2228 case GNUNET_GNSRECORD_TYPE_PKEY:
2174 case GNUNET_GNSRECORD_TYPE_EDKEY: 2229 case GNUNET_GNSRECORD_TYPE_EDKEY:
2175 { 2230 {