Page MenuHomeFreeBSD

D31733.id94394.diff
No OneTemporary

D31733.id94394.diff

Index: sys/netinet/sctp_pcb.c
===================================================================
--- sys/netinet/sctp_pcb.c
+++ sys/netinet/sctp_pcb.c
@@ -3012,7 +3012,6 @@
} else {
uint16_t first, last, candidate;
uint16_t count;
- int done;
if (ip_inp->inp_flags & INP_HIGHPORT) {
first = MODULE_GLOBAL(ipport_hifirstauto);
@@ -3040,25 +3039,22 @@
count = last - first + 1; /* number of candidates */
candidate = first + sctp_select_initial_TSN(&inp->sctp_ep) % (count);
- done = 0;
- while (!done) {
+ for (;;) {
if (sctp_isport_inuse(inp, htons(candidate), inp->def_vrf_id) == NULL) {
- done = 1;
+ lport = htons(candidate);
+ break;
}
- if (!done) {
- if (--count == 0) {
- SCTP_INP_WUNLOCK(inp);
- SCTP_INP_INFO_WUNLOCK();
- SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE);
- return (EADDRINUSE);
- }
- if (candidate == last)
- candidate = first;
- else
- candidate = candidate + 1;
+ if (--count == 0) {
+ SCTP_INP_WUNLOCK(inp);
+ SCTP_INP_INFO_WUNLOCK();
+ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EADDRINUSE);
+ return (EADDRINUSE);
}
+ if (candidate == last)
+ candidate = first;
+ else
+ candidate = candidate + 1;
}
- lport = htons(candidate);
}
if (inp->sctp_flags & (SCTP_PCB_FLAGS_SOCKET_GONE |
SCTP_PCB_FLAGS_SOCKET_ALLGONE)) {

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 11:38 AM (9 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17083759
Default Alt Text
D31733.id94394.diff (1 KB)

Event Timeline