diff options
author | tuexen <tuexen@FreeBSD.org> | 2013-05-17 22:26:05 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2013-05-17 22:26:05 +0000 |
commit | 7d22df2a4c579cfc22b9f0c483d6987303193d62 (patch) | |
tree | a43680f7a13b404ec97d55853288ce1e4b6a9f38 /sys/netinet | |
parent | 43bd9a742238917acb4c04c6a9ea8ef05815f752 (diff) | |
download | FreeBSD-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.c | 10 |
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 */ |