summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2013-05-17 22:26:05 +0000
committertuexen <tuexen@FreeBSD.org>2013-05-17 22:26:05 +0000
commit7d22df2a4c579cfc22b9f0c483d6987303193d62 (patch)
treea43680f7a13b404ec97d55853288ce1e4b6a9f38 /sys/netinet
parent43bd9a742238917acb4c04c6a9ea8ef05815f752 (diff)
downloadFreeBSD-src-7d22df2a4c579cfc22b9f0c483d6987303193d62.zip
FreeBSD-src-7d22df2a4c579cfc22b9f0c483d6987303193d62.tar.gz
Set errno to ETIMEDOUT if an SCTP association times out during
setup. MFC after: 1 week
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/sctputil.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c
index 7bd8c7a9..ee6bfc5 100644
--- a/sys/netinet/sctputil.c
+++ b/sys/netinet/sctputil.c
@@ -2688,8 +2688,14 @@ set_error:
stcb->sctp_socket->so_error = ECONNRESET;
}
} else {
- SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ECONNABORTED);
- stcb->sctp_socket->so_error = ECONNABORTED;
+ if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_WAIT) ||
+ (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_COOKIE_ECHOED)) {
+ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ETIMEDOUT);
+ stcb->sctp_socket->so_error = ETIMEDOUT;
+ } else {
+ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ECONNABORTED);
+ stcb->sctp_socket->so_error = ECONNABORTED;
+ }
}
}
/* Wake ANY sleepers */
OpenPOWER on IntegriCloud