浏览代码

dns response handling: don't treat too many addresses as an error

returning -1 rather than 0 from the parse function causes __dns_parse
to bail out and return an error. presently, name_from_dns does not
check the return value anyway, so this does not matter, but if it ever
started treating this as an error, lookups with large numbers of
addresses would break. this is a consequence of adding TCP support and
extending the buffer size used in name_from_dns.
Rich Felker 2 年之前
父节点
当前提交
0a7b4323b0
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/network/lookup_name.c

+ 1 - 1
src/network/lookup_name.c

@@ -115,7 +115,7 @@ static int dns_parse_callback(void *c, int rr, const void *data, int len, const
 {
 	char tmp[256];
 	struct dpc_ctx *ctx = c;
-	if (ctx->cnt >= MAXADDRS) return -1;
+	if (ctx->cnt >= MAXADDRS) return 0;
 	switch (rr) {
 	case RR_A:
 		if (rr != ctx->rrtype) return 0;