- if (passive) {
- local = ai;
- remote = NULL;
- } else {
- local = NULL;
- remote = ai;
- }
-
- /* Iterate over all src/dst combination, exhausting dst first */
- for (src = local, dst = remote; src != NULL || dst != NULL; /* no op */ ) {
- if (src && dst && src->ai_family == AF_INET
- && dst->ai_family == AF_INET6)
- goto get_next_dst; /* v4 -> v6 is not possible */
-
- ret = socket(src ? src->ai_family : dst->ai_family,
- sock_type(l4type), l4type);
+ for (; ai; ai = ai->ai_next) {
+ ret = socket(ai->ai_family, sock_type(l4type), l4type);