[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/19] sockets: Clean up inet_listen_opts()'s convol
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 08/19] sockets: Clean up inet_listen_opts()'s convoluted bind() loop |
Date: |
Tue, 7 Feb 2012 15:09:15 +0100 |
Signed-off-by: Markus Armbruster <address@hidden>
---
qemu-sockets.c | 14 ++++++--------
1 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/qemu-sockets.c b/qemu-sockets.c
index e6e6c72..6bcb8e3 100644
--- a/qemu-sockets.c
+++ b/qemu-sockets.c
@@ -107,7 +107,7 @@ int inet_listen_opts(QemuOpts *opts, int port_offset)
char port[33];
char uaddr[INET6_ADDRSTRLEN+1];
char uport[33];
- int slisten,rc,to,try_next;
+ int slisten, rc, to, port_min, port_max, p;
memset(&ai,0, sizeof(ai));
ai.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
@@ -159,20 +159,18 @@ int inet_listen_opts(QemuOpts *opts, int port_offset)
}
#endif
- for (;;) {
+ port_min = inet_getport(e);
+ port_max = to ? to + port_offset : port_min;
+ for (p = port_min; p <= port_max; p++) {
+ inet_setport(e, p);
if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) {
goto listen;
}
- try_next = to && (inet_getport(e) <= to + port_offset);
- if (!try_next)
+ if (p == port_max) {
fprintf(stderr,"%s: bind(%s,%s,%d): %s\n", __FUNCTION__,
inet_strfamily(e->ai_family), uaddr, inet_getport(e),
strerror(errno));
- if (try_next) {
- inet_setport(e, inet_getport(e) + 1);
- continue;
}
- break;
}
closesocket(slisten);
}
--
1.7.6.5
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, (continued)
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/14
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Anthony Liguori, 2012/02/14
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/15
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Anthony Liguori, 2012/02/22
- Re: [Qemu-devel] [PATCH 09/19] sockets: Chardev open error reporting, sockets part, Markus Armbruster, 2012/02/23
[Qemu-devel] [PATCH 16/19] spice-qemu-char: Chardev open error reporting, spicevmc part, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 12/19] qemu-char: Chardev open error reporting, tty part, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 02/19] qemu-char: Use qemu_open() to avoid leaking fds to children, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 13/19] qemu-char: Chardev open error reporting, parport part, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 08/19] sockets: Clean up inet_listen_opts()'s convoluted bind() loop,
Markus Armbruster <=
[Qemu-devel] [PATCH 04/19] qemu-char: qemu_chr_open_fd() can't fail, don't check, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 07/19] sockets: Drop sockets_debug debug code, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 06/19] gdbstub: Error locations for -gdb, Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 14/19] console: Eliminate text_consoles[], Markus Armbruster, 2012/02/07
[Qemu-devel] [PATCH 10/19] qemu-char: Chardev open error reporting, !_WIN32 part, Markus Armbruster, 2012/02/07