- 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:
Randall Stewart 2007-12-04 20:20:42 +00:00
parent 9889281da3
commit 2aedc03dad
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=174266
2 changed files with 5 additions and 4 deletions

View File

@ -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;
}

View File

@ -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