51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
if ((_socket = socket(address->sockaddr.sockaddr.sa_family,
SOCK_DGRAM | SOCK_CLOEXEC | extraType, 0)) == INVALID_SOCKET)
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
socket: self
errNo: of_socket_errno()];
_canBlock = true;
#if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC)
/* {} needed to avoid warning with Clang 10 if next #if is false. */
if ((flags = fcntl(_socket, F_GETFD, 0)) != -1) {
fcntl(_socket, F_SETFD, flags | FD_CLOEXEC);
}
#endif
#if defined(OF_HPUX) || defined(OF_WII) || defined(OF_NINTENDO_3DS)
if (OFSocketAddressPort(address) != 0) {
#endif
if (bind(_socket, &address->sockaddr.sockaddr,
address->length) != 0) {
int errNo = of_socket_errno();
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
|
|
|
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
if ((_socket = socket(address->sockaddr.sockaddr.sa_family,
SOCK_DGRAM | SOCK_CLOEXEC | extraType, 0)) == INVALID_SOCKET)
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
socket: self
errNo: OFSocketErrNo()];
_canBlock = true;
#if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC)
/* {} needed to avoid warning with Clang 10 if next #if is false. */
if ((flags = fcntl(_socket, F_GETFD, 0)) != -1) {
fcntl(_socket, F_SETFD, flags | FD_CLOEXEC);
}
#endif
#if defined(OF_HPUX) || defined(OF_WII) || defined(OF_NINTENDO_3DS)
if (OFSocketAddressPort(address) != 0) {
#endif
if (bind(_socket, &address->sockaddr.sockaddr,
address->length) != 0) {
int errNo = OFSocketErrNo();
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
|
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
if ((ret = bind(_socket, &address->sockaddr.sockaddr,
address->length)) == 0) {
port = rnd;
break;
}
if (of_socket_errno() != EADDRINUSE) {
int errNo = of_socket_errno();
OFString *host = OFSocketAddressString(address);
uint16_t port = OFSocketAddressPort(port);
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
|
|
|
|
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
if ((ret = bind(_socket, &address->sockaddr.sockaddr,
address->length)) == 0) {
port = rnd;
break;
}
if (OFSocketErrNo() != EADDRINUSE) {
int errNo = OFSocketErrNo();
OFString *host = OFSocketAddressString(address);
uint16_t port = OFSocketAddressPort(port);
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
if ((port = OFSocketAddressPort(address)) > 0)
return port;
#if !defined(OF_HPUX) && !defined(OF_WII) && !defined(OF_NINTENDO_3DS)
memset(address, 0, sizeof(*address));
address->length = (socklen_t)sizeof(address->sockaddr);
if (of_getsockname(_socket, &address->sockaddr.sockaddr,
&address->length) != 0) {
int errNo = of_socket_errno();
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
|
|
|
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
if ((port = OFSocketAddressPort(address)) > 0)
return port;
#if !defined(OF_HPUX) && !defined(OF_WII) && !defined(OF_NINTENDO_3DS)
memset(address, 0, sizeof(*address));
address->length = (socklen_t)sizeof(address->sockaddr);
if (OFGetSockName(_socket, &address->sockaddr.sockaddr,
&address->length) != 0) {
int errNo = OFSocketErrNo();
closesocket(_socket);
_socket = INVALID_SOCKET;
@throw [OFBindFailedException
exceptionWithHost: OFSocketAddressString(address)
port: OFSocketAddressPort(address)
|