Deleted Added
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 543 unchanged lines hidden (view full) ---

552 }
553
554 ipv6_bytes = 16;
555 p = buf;
556
557 if (zero_start == 0) {
558
559 /* IPv4-mapped address */
560 if ((zero_groups == 5 && addr[10] == 0xff && addr[11] == 0xff)
561 /* IPv4-compatible address */
562 || (zero_groups == 6)
563 /* not IPv6 loopback address */
564 || (zero_groups == 7 && addr[14] != 0 && addr[15] != 1))
565 {
566 ipv6_bytes = 12;
567 }
568

--- 632 unchanged lines hidden (view full) ---

1201 while (buf < end) {
1202 c = *buf++;
1203
1204 if (c == ':') {
1205 if (nibbles != 0) {
1206 ipv4 = buf;
1207
1208 *addr++ = (u_char) (group >> 8);
1209 *addr++ = (u_char) (group & 0xff);
1210 groups_left--;
1211
1212 if (groups_left != 0) {
1213 nibbles = 0;
1214 group = 0;
1215 continue;
1216 }
1217

--- 16 unchanged lines hidden (view full) ---

1234
1235 group = nxt_inet_addr(ipv4, end - ipv4);
1236 if (group == INADDR_NONE) {
1237 return NXT_ERROR;
1238 }
1239
1240 group = ntohl(group);
1241
1242 *addr++ = (u_char) ((group >> 24) & 0xff);
1243 *addr++ = (u_char) ((group >> 16) & 0xff);
1244 groups_left--;
1245
1246 /* the low 16-bit are copied below */
1247 break;
1248 }
1249
1250 nibbles++;
1251

--- 23 unchanged lines hidden (view full) ---

1275 return NXT_ERROR;
1276 }
1277
1278 if (nibbles == 0 && zero_start == NULL) {
1279 return NXT_ERROR;
1280 }
1281
1282 *addr++ = (u_char) (group >> 8);
1283 *addr++ = (u_char) (group & 0xff);
1284 groups_left--;
1285
1286 if (groups_left != 0) {
1287
1288 if (zero_start != NULL) {
1289
1290 /* moving part before consecutive zero groups to the end */
1291

--- 23 unchanged lines hidden ---