mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
- More fixes for the non-blocking msg send, had the skip of the pre-block
test incorrect. - Fix the initial buf calculation to be more friendly, calc is the same but we use different variable to make it easier amongst the different code versions. MFC after: 1 week
This commit is contained in:
parent
9889281da3
commit
2aedc03dad
2 changed files with 5 additions and 4 deletions
|
|
@ -11627,7 +11627,7 @@ sctp_lower_sosend(struct socket *so,
|
|||
local_add_more = sndlen;
|
||||
}
|
||||
len = 0;
|
||||
if (non_blocking == 0) {
|
||||
if (non_blocking) {
|
||||
goto skip_preblock;
|
||||
}
|
||||
if (((max_len <= local_add_more) &&
|
||||
|
|
@ -11667,8 +11667,9 @@ sctp_lower_sosend(struct socket *so,
|
|||
}
|
||||
inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk));
|
||||
}
|
||||
if (SCTP_SB_LIMIT_SND(so) > stcb->asoc.total_output_queue_size) {
|
||||
max_len = SCTP_SB_LIMIT_SND(so) - stcb->asoc.total_output_queue_size;
|
||||
inqueue_bytes = stcb->asoc.total_output_queue_size - (stcb->asoc.chunks_on_out_queue * sizeof(struct sctp_data_chunk));
|
||||
if (SCTP_SB_LIMIT_SND(so) > inqueue_bytes) {
|
||||
max_len = SCTP_SB_LIMIT_SND(so) - inqueue_bytes;
|
||||
} else {
|
||||
max_len = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ sctp_init(void)
|
|||
* the SB_MAX whichever is smaller for the send window.
|
||||
*/
|
||||
sb_max_adj = (u_long)((u_quad_t) (SB_MAX) * MCLBYTES / (MSIZE + MCLBYTES));
|
||||
sctp_sendspace = min((min(SB_MAX, sb_max_adj)),
|
||||
sctp_sendspace = min(sb_max_adj,
|
||||
(((uint32_t) nmbclusters / 2) * SCTP_DEFAULT_MAXSEGMENT));
|
||||
/*
|
||||
* Now for the recv window, should we take the same amount? or
|
||||
|
|
|
|||
Loading…
Reference in a new issue