Do the renaming of sb_cc to sb_ccc in a way with less code changes by
using a macro. This is an alternate approach to https://svnweb.freebsd.org/changeset/base/275326 which is easier to handle upstream. Discussed with: rrs, glebius
This commit is contained in:
parent
d5b2a401e7
commit
6607aca965
@ -70,14 +70,14 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc)
|
||||
|
||||
/*
|
||||
* This is really set wrong with respect to a 1-2-m socket. Since
|
||||
* the sb_ccc is the count that everyone as put up. When we re-write
|
||||
* the sb_cc is the count that everyone as put up. When we re-write
|
||||
* sctp_soreceive then we will fix this so that ONLY this
|
||||
* associations data is taken into account.
|
||||
*/
|
||||
if (stcb->sctp_socket == NULL)
|
||||
return (calc);
|
||||
|
||||
if (stcb->asoc.sb_ccc == 0 &&
|
||||
if (stcb->asoc.sb_cc == 0 &&
|
||||
asoc->size_on_reasm_queue == 0 &&
|
||||
asoc->size_on_all_streams == 0) {
|
||||
/* Full rwnd granted */
|
||||
@ -1363,7 +1363,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc,
|
||||
* When we have NO room in the rwnd we check to make sure
|
||||
* the reader is doing its job...
|
||||
*/
|
||||
if (stcb->sctp_socket->so_rcv.sb_ccc) {
|
||||
if (stcb->sctp_socket->so_rcv.sb_cc) {
|
||||
/* some to read, wake-up */
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
@ -1032,7 +1032,7 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED,
|
||||
if (stcb->sctp_socket) {
|
||||
if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) ||
|
||||
(stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) {
|
||||
stcb->sctp_socket->so_snd.sb_ccc = 0;
|
||||
stcb->sctp_socket->so_snd.sb_cc = 0;
|
||||
}
|
||||
sctp_ulp_notify(SCTP_NOTIFY_ASSOC_DOWN, stcb, 0, NULL, SCTP_SO_NOT_LOCKED);
|
||||
}
|
||||
|
@ -393,13 +393,15 @@ typedef struct callout sctp_os_timer_t;
|
||||
#define SCTP_CLEAR_SO_NBIO(so) ((so)->so_state &= ~SS_NBIO)
|
||||
/* get the socket type */
|
||||
#define SCTP_SO_TYPE(so) ((so)->so_type)
|
||||
/* Use a macro for renaming sb_cc to sb_ccc */
|
||||
#define sb_cc sb_ccc
|
||||
/* reserve sb space for a socket */
|
||||
#define SCTP_SORESERVE(so, send, recv) soreserve(so, send, recv)
|
||||
/* wakeup a socket */
|
||||
#define SCTP_SOWAKEUP(so) wakeup(&(so)->so_timeo)
|
||||
/* clear the socket buffer state */
|
||||
#define SCTP_SB_CLEAR(sb) \
|
||||
(sb).sb_ccc = 0; \
|
||||
(sb).sb_cc = 0; \
|
||||
(sb).sb_mb = NULL; \
|
||||
(sb).sb_mbcnt = 0;
|
||||
|
||||
|
@ -7250,7 +7250,7 @@ one_more_time:
|
||||
if ((stcb->sctp_socket != NULL) && \
|
||||
((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) ||
|
||||
(stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) {
|
||||
atomic_subtract_int(&stcb->sctp_socket->so_snd.sb_ccc, sp->length);
|
||||
atomic_subtract_int(&stcb->sctp_socket->so_snd.sb_cc, sp->length);
|
||||
}
|
||||
if (sp->data) {
|
||||
sctp_m_freem(sp->data);
|
||||
@ -11532,7 +11532,7 @@ jump_out:
|
||||
drp->current_onq = htonl(asoc->size_on_reasm_queue +
|
||||
asoc->size_on_all_streams +
|
||||
asoc->my_rwnd_control_len +
|
||||
stcb->sctp_socket->so_rcv.sb_ccc);
|
||||
stcb->sctp_socket->so_rcv.sb_cc);
|
||||
} else {
|
||||
/*-
|
||||
* If my rwnd is 0, possibly from mbuf depletion as well as
|
||||
|
@ -3397,7 +3397,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from)
|
||||
if ((asoc->asoc.size_on_reasm_queue > 0) ||
|
||||
(asoc->asoc.control_pdapi) ||
|
||||
(asoc->asoc.size_on_all_streams > 0) ||
|
||||
(so && (so->so_rcv.sb_ccc > 0))) {
|
||||
(so && (so->so_rcv.sb_cc > 0))) {
|
||||
/* Left with Data unread */
|
||||
struct mbuf *op_err;
|
||||
|
||||
@ -3625,7 +3625,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from)
|
||||
TAILQ_REMOVE(&inp->read_queue, sq, next);
|
||||
sctp_free_remote_addr(sq->whoFrom);
|
||||
if (so)
|
||||
so->so_rcv.sb_ccc -= sq->length;
|
||||
so->so_rcv.sb_cc -= sq->length;
|
||||
if (sq->data) {
|
||||
sctp_m_freem(sq->data);
|
||||
sq->data = NULL;
|
||||
@ -4853,7 +4853,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre
|
||||
inp->sctp_flags |= SCTP_PCB_FLAGS_WAS_CONNECTED;
|
||||
if (so) {
|
||||
SOCK_LOCK(so);
|
||||
if (so->so_rcv.sb_ccc == 0) {
|
||||
if (so->so_rcv.sb_cc == 0) {
|
||||
so->so_state &= ~(SS_ISCONNECTING |
|
||||
SS_ISDISCONNECTING |
|
||||
SS_ISCONFIRMING |
|
||||
|
@ -369,7 +369,7 @@ struct sctp_inpcb {
|
||||
} ip_inp;
|
||||
|
||||
|
||||
/* Socket buffer lock protects read_queue and of course sb_ccc */
|
||||
/* Socket buffer lock protects read_queue and of course sb_cc */
|
||||
struct sctp_readhead read_queue;
|
||||
|
||||
LIST_ENTRY(sctp_inpcb) sctp_list; /* lists all endpoints */
|
||||
|
@ -990,7 +990,7 @@ struct sctp_association {
|
||||
|
||||
uint32_t total_output_queue_size;
|
||||
|
||||
uint32_t sb_ccc; /* shadow of sb_ccc */
|
||||
uint32_t sb_cc; /* shadow of sb_cc */
|
||||
uint32_t sb_send_resv; /* amount reserved on a send */
|
||||
uint32_t my_rwnd_control_len; /* shadow of sb_mbcnt used for rwnd
|
||||
* control */
|
||||
|
@ -586,7 +586,7 @@ sctp_must_try_again:
|
||||
if (((flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) &&
|
||||
(atomic_cmpset_int(&inp->sctp_flags, flags, (flags | SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP)))) {
|
||||
if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) ||
|
||||
(so->so_rcv.sb_ccc > 0)) {
|
||||
(so->so_rcv.sb_cc > 0)) {
|
||||
#ifdef SCTP_LOG_CLOSING
|
||||
sctp_log_closing(inp, NULL, 13);
|
||||
#endif
|
||||
@ -751,7 +751,7 @@ sctp_disconnect(struct socket *so)
|
||||
}
|
||||
if (((so->so_options & SO_LINGER) &&
|
||||
(so->so_linger == 0)) ||
|
||||
(so->so_rcv.sb_ccc > 0)) {
|
||||
(so->so_rcv.sb_cc > 0)) {
|
||||
if (SCTP_GET_STATE(asoc) !=
|
||||
SCTP_STATE_COOKIE_WAIT) {
|
||||
/* Left with Data unread */
|
||||
@ -916,7 +916,7 @@ sctp_flush(struct socket *so, int how)
|
||||
inp->sctp_flags |= SCTP_PCB_FLAGS_SOCKET_CANT_READ;
|
||||
SCTP_INP_READ_UNLOCK(inp);
|
||||
SCTP_INP_WUNLOCK(inp);
|
||||
so->so_rcv.sb_ccc = 0;
|
||||
so->so_rcv.sb_cc = 0;
|
||||
so->so_rcv.sb_mbcnt = 0;
|
||||
so->so_rcv.sb_mb = NULL;
|
||||
}
|
||||
@ -925,7 +925,7 @@ sctp_flush(struct socket *so, int how)
|
||||
* First make sure the sb will be happy, we don't use these
|
||||
* except maybe the count
|
||||
*/
|
||||
so->so_snd.sb_ccc = 0;
|
||||
so->so_snd.sb_cc = 0;
|
||||
so->so_snd.sb_mbcnt = 0;
|
||||
so->so_snd.sb_mb = NULL;
|
||||
|
||||
|
@ -82,9 +82,9 @@ extern struct pr_usrreqs sctp_usrreqs;
|
||||
|
||||
#define sctp_maxspace(sb) (max((sb)->sb_hiwat,SCTP_MINIMAL_RWND))
|
||||
|
||||
#define sctp_sbspace(asoc, sb) ((long) ((sctp_maxspace(sb) > (asoc)->sb_ccc) ? (sctp_maxspace(sb) - (asoc)->sb_ccc) : 0))
|
||||
#define sctp_sbspace(asoc, sb) ((long) ((sctp_maxspace(sb) > (asoc)->sb_cc) ? (sctp_maxspace(sb) - (asoc)->sb_cc) : 0))
|
||||
|
||||
#define sctp_sbspace_failedmsgs(sb) ((long) ((sctp_maxspace(sb) > (sb)->sb_ccc) ? (sctp_maxspace(sb) - (sb)->sb_ccc) : 0))
|
||||
#define sctp_sbspace_failedmsgs(sb) ((long) ((sctp_maxspace(sb) > (sb)->sb_cc) ? (sctp_maxspace(sb) - (sb)->sb_cc) : 0))
|
||||
|
||||
#define sctp_sbspace_sub(a,b) ((a > b) ? (a - b) : 0)
|
||||
|
||||
@ -195,10 +195,10 @@ extern struct pr_usrreqs sctp_usrreqs;
|
||||
}
|
||||
|
||||
#define sctp_sbfree(ctl, stcb, sb, m) { \
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_ccc, SCTP_BUF_LEN((m))); \
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_mbcnt, MSIZE); \
|
||||
if (((ctl)->do_not_ref_stcb == 0) && stcb) {\
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(stcb)->asoc.sb_ccc, SCTP_BUF_LEN((m))); \
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \
|
||||
SCTP_SAVE_ATOMIC_DECREMENT(&(stcb)->asoc.my_rwnd_control_len, MSIZE); \
|
||||
} \
|
||||
if (SCTP_BUF_TYPE(m) != MT_DATA && SCTP_BUF_TYPE(m) != MT_HEADER && \
|
||||
@ -207,10 +207,10 @@ extern struct pr_usrreqs sctp_usrreqs;
|
||||
}
|
||||
|
||||
#define sctp_sballoc(stcb, sb, m) { \
|
||||
atomic_add_int(&(sb)->sb_ccc,SCTP_BUF_LEN((m))); \
|
||||
atomic_add_int(&(sb)->sb_cc,SCTP_BUF_LEN((m))); \
|
||||
atomic_add_int(&(sb)->sb_mbcnt, MSIZE); \
|
||||
if (stcb) { \
|
||||
atomic_add_int(&(stcb)->asoc.sb_ccc,SCTP_BUF_LEN((m))); \
|
||||
atomic_add_int(&(stcb)->asoc.sb_cc,SCTP_BUF_LEN((m))); \
|
||||
atomic_add_int(&(stcb)->asoc.my_rwnd_control_len, MSIZE); \
|
||||
} \
|
||||
if (SCTP_BUF_TYPE(m) != MT_DATA && SCTP_BUF_TYPE(m) != MT_HEADER && \
|
||||
|
@ -67,9 +67,9 @@ sctp_sblog(struct sockbuf *sb, struct sctp_tcb *stcb, int from, int incr)
|
||||
struct sctp_cwnd_log sctp_clog;
|
||||
|
||||
sctp_clog.x.sb.stcb = stcb;
|
||||
sctp_clog.x.sb.so_sbcc = sb->sb_ccc;
|
||||
sctp_clog.x.sb.so_sbcc = sb->sb_cc;
|
||||
if (stcb)
|
||||
sctp_clog.x.sb.stcb_sbcc = stcb->asoc.sb_ccc;
|
||||
sctp_clog.x.sb.stcb_sbcc = stcb->asoc.sb_cc;
|
||||
else
|
||||
sctp_clog.x.sb.stcb_sbcc = 0;
|
||||
sctp_clog.x.sb.incr = incr;
|
||||
@ -4363,7 +4363,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp,
|
||||
{
|
||||
/*
|
||||
* Here we must place the control on the end of the socket read
|
||||
* queue AND increment sb_ccc so that select will work properly on
|
||||
* queue AND increment sb_cc so that select will work properly on
|
||||
* read.
|
||||
*/
|
||||
struct mbuf *m, *prev = NULL;
|
||||
@ -4489,7 +4489,7 @@ sctp_append_to_readq(struct sctp_inpcb *inp,
|
||||
* the reassembly queue.
|
||||
*
|
||||
* If PDAPI this means we need to add m to the end of the data.
|
||||
* Increase the length in the control AND increment the sb_ccc.
|
||||
* Increase the length in the control AND increment the sb_cc.
|
||||
* Otherwise sb is NULL and all we need to do is put it at the end
|
||||
* of the mbuf chain.
|
||||
*/
|
||||
@ -4701,10 +4701,10 @@ sctp_free_bufspace(struct sctp_tcb *stcb, struct sctp_association *asoc,
|
||||
|
||||
if (stcb->sctp_socket && (((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL)) ||
|
||||
((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE)))) {
|
||||
if (stcb->sctp_socket->so_snd.sb_ccc >= tp1->book_size) {
|
||||
stcb->sctp_socket->so_snd.sb_ccc -= tp1->book_size;
|
||||
if (stcb->sctp_socket->so_snd.sb_cc >= tp1->book_size) {
|
||||
stcb->sctp_socket->so_snd.sb_cc -= tp1->book_size;
|
||||
} else {
|
||||
stcb->sctp_socket->so_snd.sb_ccc = 0;
|
||||
stcb->sctp_socket->so_snd.sb_cc = 0;
|
||||
|
||||
}
|
||||
}
|
||||
@ -5254,11 +5254,11 @@ sctp_sorecvmsg(struct socket *so,
|
||||
in_eeor_mode = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR);
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) {
|
||||
sctp_misc_ints(SCTP_SORECV_ENTER,
|
||||
rwnd_req, in_eeor_mode, so->so_rcv.sb_ccc, uio->uio_resid);
|
||||
rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, uio->uio_resid);
|
||||
}
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) {
|
||||
sctp_misc_ints(SCTP_SORECV_ENTERPL,
|
||||
rwnd_req, block_allowed, so->so_rcv.sb_ccc, uio->uio_resid);
|
||||
rwnd_req, block_allowed, so->so_rcv.sb_cc, uio->uio_resid);
|
||||
}
|
||||
error = sblock(&so->so_rcv, (block_allowed ? SBL_WAIT : 0));
|
||||
if (error) {
|
||||
@ -5277,23 +5277,23 @@ restart_nosblocks:
|
||||
(inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE)) {
|
||||
goto out;
|
||||
}
|
||||
if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && (so->so_rcv.sb_ccc == 0)) {
|
||||
if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && (so->so_rcv.sb_cc == 0)) {
|
||||
if (so->so_error) {
|
||||
error = so->so_error;
|
||||
if ((in_flags & MSG_PEEK) == 0)
|
||||
so->so_error = 0;
|
||||
goto out;
|
||||
} else {
|
||||
if (so->so_rcv.sb_ccc == 0) {
|
||||
if (so->so_rcv.sb_cc == 0) {
|
||||
/* indicate EOF */
|
||||
error = 0;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((so->so_rcv.sb_ccc <= held_length) && block_allowed) {
|
||||
if ((so->so_rcv.sb_cc <= held_length) && block_allowed) {
|
||||
/* we need to wait for data */
|
||||
if ((so->so_rcv.sb_ccc == 0) &&
|
||||
if ((so->so_rcv.sb_cc == 0) &&
|
||||
((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) ||
|
||||
(inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) {
|
||||
if ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0) {
|
||||
@ -5329,7 +5329,7 @@ restart_nosblocks:
|
||||
}
|
||||
held_length = 0;
|
||||
goto restart_nosblocks;
|
||||
} else if (so->so_rcv.sb_ccc == 0) {
|
||||
} else if (so->so_rcv.sb_cc == 0) {
|
||||
if (so->so_error) {
|
||||
error = so->so_error;
|
||||
if ((in_flags & MSG_PEEK) == 0)
|
||||
@ -5386,11 +5386,11 @@ restart_nosblocks:
|
||||
SCTP_INP_READ_LOCK(inp);
|
||||
}
|
||||
control = TAILQ_FIRST(&inp->read_queue);
|
||||
if ((control == NULL) && (so->so_rcv.sb_ccc != 0)) {
|
||||
if ((control == NULL) && (so->so_rcv.sb_cc != 0)) {
|
||||
#ifdef INVARIANTS
|
||||
panic("Huh, its non zero and nothing on control?");
|
||||
#endif
|
||||
so->so_rcv.sb_ccc = 0;
|
||||
so->so_rcv.sb_cc = 0;
|
||||
}
|
||||
SCTP_INP_READ_UNLOCK(inp);
|
||||
hold_rlock = 0;
|
||||
@ -5511,11 +5511,11 @@ restart_nosblocks:
|
||||
}
|
||||
/*
|
||||
* if we reach here, not suitable replacement is available
|
||||
* <or> fragment interleave is NOT on. So stuff the sb_ccc
|
||||
* <or> fragment interleave is NOT on. So stuff the sb_cc
|
||||
* into the our held count, and its time to sleep again.
|
||||
*/
|
||||
held_length = so->so_rcv.sb_ccc;
|
||||
control->held_length = so->so_rcv.sb_ccc;
|
||||
held_length = so->so_rcv.sb_cc;
|
||||
control->held_length = so->so_rcv.sb_cc;
|
||||
goto restart;
|
||||
}
|
||||
/* Clear the held length since there is something to read */
|
||||
@ -5812,10 +5812,10 @@ get_more_data:
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_SB_LOGGING_ENABLE) {
|
||||
sctp_sblog(&so->so_rcv, control->do_not_ref_stcb ? NULL : stcb, SCTP_LOG_SBFREE, cp_len);
|
||||
}
|
||||
atomic_subtract_int(&so->so_rcv.sb_ccc, cp_len);
|
||||
atomic_subtract_int(&so->so_rcv.sb_cc, cp_len);
|
||||
if ((control->do_not_ref_stcb == 0) &&
|
||||
stcb) {
|
||||
atomic_subtract_int(&stcb->asoc.sb_ccc, cp_len);
|
||||
atomic_subtract_int(&stcb->asoc.sb_cc, cp_len);
|
||||
}
|
||||
copied_so_far += cp_len;
|
||||
freed_so_far += cp_len;
|
||||
@ -5960,7 +5960,7 @@ wait_some_more:
|
||||
(sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE))) {
|
||||
goto release;
|
||||
}
|
||||
if (so->so_rcv.sb_ccc <= control->held_length) {
|
||||
if (so->so_rcv.sb_cc <= control->held_length) {
|
||||
error = sbwait(&so->so_rcv);
|
||||
if (error) {
|
||||
goto release;
|
||||
@ -5987,8 +5987,8 @@ wait_some_more:
|
||||
}
|
||||
goto done_with_control;
|
||||
}
|
||||
if (so->so_rcv.sb_ccc > held_length) {
|
||||
control->held_length = so->so_rcv.sb_ccc;
|
||||
if (so->so_rcv.sb_cc > held_length) {
|
||||
control->held_length = so->so_rcv.sb_cc;
|
||||
held_length = 0;
|
||||
}
|
||||
goto wait_some_more;
|
||||
@ -6135,13 +6135,13 @@ out:
|
||||
freed_so_far,
|
||||
((uio) ? (slen - uio->uio_resid) : slen),
|
||||
stcb->asoc.my_rwnd,
|
||||
so->so_rcv.sb_ccc);
|
||||
so->so_rcv.sb_cc);
|
||||
} else {
|
||||
sctp_misc_ints(SCTP_SORECV_DONE,
|
||||
freed_so_far,
|
||||
((uio) ? (slen - uio->uio_resid) : slen),
|
||||
0,
|
||||
so->so_rcv.sb_ccc);
|
||||
so->so_rcv.sb_cc);
|
||||
}
|
||||
}
|
||||
stage_left:
|
||||
|
@ -286,10 +286,10 @@ do { \
|
||||
} \
|
||||
if (stcb->sctp_socket && ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || \
|
||||
(stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { \
|
||||
if (stcb->sctp_socket->so_snd.sb_ccc >= tp1->book_size) { \
|
||||
atomic_subtract_int(&((stcb)->sctp_socket->so_snd.sb_ccc), tp1->book_size); \
|
||||
if (stcb->sctp_socket->so_snd.sb_cc >= tp1->book_size) { \
|
||||
atomic_subtract_int(&((stcb)->sctp_socket->so_snd.sb_cc), tp1->book_size); \
|
||||
} else { \
|
||||
stcb->sctp_socket->so_snd.sb_ccc = 0; \
|
||||
stcb->sctp_socket->so_snd.sb_cc = 0; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
@ -307,10 +307,10 @@ do { \
|
||||
} \
|
||||
if (stcb->sctp_socket && ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || \
|
||||
(stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { \
|
||||
if (stcb->sctp_socket->so_snd.sb_ccc >= sp->length) { \
|
||||
atomic_subtract_int(&stcb->sctp_socket->so_snd.sb_ccc,sp->length); \
|
||||
if (stcb->sctp_socket->so_snd.sb_cc >= sp->length) { \
|
||||
atomic_subtract_int(&stcb->sctp_socket->so_snd.sb_cc,sp->length); \
|
||||
} else { \
|
||||
stcb->sctp_socket->so_snd.sb_ccc = 0; \
|
||||
stcb->sctp_socket->so_snd.sb_cc = 0; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
@ -322,7 +322,7 @@ do { \
|
||||
if ((stcb->sctp_socket != NULL) && \
|
||||
((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || \
|
||||
(stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { \
|
||||
atomic_add_int(&stcb->sctp_socket->so_snd.sb_ccc,sz); \
|
||||
atomic_add_int(&stcb->sctp_socket->so_snd.sb_cc,sz); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user