Overview
Comment: | Only set SCTP_RECVRCVINFO if it is defined |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | sctp |
Files: | files | file ages | folders |
SHA3-256: |
dc5f8eb4833ca90110b34d91da08f820 |
User & Date: | js on 2024-05-01 21:27:37 |
Other Links: | branch diff | manifest | tags |
Context
2024-05-01
| ||
21:39 | GitHub Actions: Install libsctp-dev on Ubuntu check-in: 3c91319201 user: js tags: sctp | |
21:27 | Only set SCTP_RECVRCVINFO if it is defined check-in: dc5f8eb483 user: js tags: sctp | |
21:15 | OFSCTPSocket: Add support for streams and PPID check-in: b0f8978404 user: js tags: sctp | |
Changes
Modified src/OFSCTPSocket.m from [067343fa0e] to [0b73208e8d].
︙ | ︙ | |||
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | - (bool)of_createSocketForAddress: (const OFSocketAddress *)address errNo: (int *)errNo { #if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC) int flags; #endif int one = 1; if (_socket != OFInvalidSocketHandle) @throw [OFAlreadyOpenException exceptionWithObject: self]; if ((_socket = socket( ((struct sockaddr *)&address->sockaddr)->sa_family, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_SCTP)) == OFInvalidSocketHandle) { *errNo = _OFSocketErrNo(); return false; } #if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC) if ((flags = fcntl(_socket, F_GETFD, 0)) != -1) fcntl(_socket, F_SETFD, flags | FD_CLOEXEC); #endif if (setsockopt(_socket, IPPROTO_SCTP, SCTP_RECVRCVINFO, &one, sizeof(one)) != 0) { *errNo = _OFSocketErrNo(); closesocket(_socket); _socket = OFInvalidSocketHandle; return false; } return true; } - (bool)of_connectSocketToAddress: (const OFSocketAddress *)address errNo: (int *)errNo { | > > > > | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | - (bool)of_createSocketForAddress: (const OFSocketAddress *)address errNo: (int *)errNo { #if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC) int flags; #endif #ifdef SCTP_RECVRCVINFO int one = 1; #endif if (_socket != OFInvalidSocketHandle) @throw [OFAlreadyOpenException exceptionWithObject: self]; if ((_socket = socket( ((struct sockaddr *)&address->sockaddr)->sa_family, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_SCTP)) == OFInvalidSocketHandle) { *errNo = _OFSocketErrNo(); return false; } #if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC) if ((flags = fcntl(_socket, F_GETFD, 0)) != -1) fcntl(_socket, F_SETFD, flags | FD_CLOEXEC); #endif #ifdef SCTP_RECVRCVINFO if (setsockopt(_socket, IPPROTO_SCTP, SCTP_RECVRCVINFO, &one, sizeof(one)) != 0) { *errNo = _OFSocketErrNo(); closesocket(_socket); _socket = OFInvalidSocketHandle; return false; } #endif return true; } - (bool)of_connectSocketToAddress: (const OFSocketAddress *)address errNo: (int *)errNo { |
︙ | ︙ | |||
319 320 321 322 323 324 325 | } objc_autoreleasePoolPop(pool); return address; } | | > | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | } objc_autoreleasePoolPop(pool); return address; } #ifdef SCTP_RECVRCVINFO - (instancetype)accept { OFSCTPSocket *accepted = [super accept]; int one = 1; if (setsockopt(accepted->_socket, IPPROTO_SCTP, SCTP_RECVRCVINFO, &one, sizeof(one)) != 0) @throw [OFAcceptSocketFailedException exceptionWithSocket: self errNo: _OFSocketErrNo()]; return accepted; } #endif - (size_t)receiveIntoBuffer: (void *)buffer length: (size_t)length { return [self receiveIntoBuffer: buffer length: length streamID: NULL PPID: NULL]; |
︙ | ︙ |