summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2007-12-04 20:20:42 +0000
committerrrs <rrs@FreeBSD.org>2007-12-04 20:20:42 +0000
commit9e75c558ad28621d920802560562b31369202c17 (patch)
treef2a3355d296c6ea9fbd216bfdf4747a1f575ca5c /sys
parent411cf00f62aebdc2ae138f2e75b1a75811fd1210 (diff)
downloadFreeBSD-src-9e75c558ad28621d920802560562b31369202c17.zip
FreeBSD-src-9e75c558ad28621d920802560562b31369202c17.tar.gz
- 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
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/sctp_output.c7
-rw-r--r--sys/netinet/sctp_usrreq.c2
2 files changed, 5 insertions, 4 deletions
diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c
index d648d18..d1c9d71 100644
--- a/sys/netinet/sctp_output.c
+++ b/sys/netinet/sctp_output.c
@@ -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;
}
diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c
index 070c9a7..aea2db5 100644
--- a/sys/netinet/sctp_usrreq.c
+++ b/sys/netinet/sctp_usrreq.c
@@ -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
OpenPOWER on IntegriCloud