Overview
Context
Changes
Modified src/OFIPSocketAsyncConnector.m
from [e235fd33e4]
to [964b049ea4].
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
-
+
|
#import "OFIPSocketAsyncConnector.h"
#import "OFData.h"
#import "OFTCPSocket.h"
#import "OFThread.h"
#import "OFTimer.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
#import "OFInvalidFormatException.h"
@implementation OFIPSocketAsyncConnector
- (instancetype)initWithSocket: (id)sock
host: (OFString *)host
port: (uint16_t)port
delegate: (id)delegate
|
︙ | | |
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
-
-
-
-
+
+
+
+
-
+
|
}
[self didConnect];
}
- (id)of_connectionFailedExceptionForErrNo: (int)errNo
{
return [OFConnectionFailedException exceptionWithHost: _host
port: _port
socket: _socket
errNo: errNo];
return [OFConnectSocketFailedException exceptionWithHost: _host
port: _port
socket: _socket
errNo: errNo];
}
- (void)tryNextAddressWithRunLoopMode: (OFRunLoopMode)runLoopMode
{
OFSocketAddress address = *(const OFSocketAddress *)
[_socketAddresses itemAtIndex: _socketAddressesIndex++];
int errNo;
OFSocketAddressSetPort(&address, _port);
if (![_socket of_createSocketForAddress: &address errNo: &errNo]) {
if (_socketAddressesIndex >= _socketAddresses.count) {
_exception = [[OFConnectionFailedException alloc]
_exception = [[OFConnectSocketFailedException alloc]
initWithHost: _host
port: _port
socket: _socket
errNo: errNo];
[self didConnect];
return;
}
|
︙ | | |
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
-
+
|
delegate: self];
return;
} else {
#endif
[_socket of_closeSocket];
if (_socketAddressesIndex >= _socketAddresses.count) {
_exception = [[OFConnectionFailedException
_exception = [[OFConnectSocketFailedException
alloc] initWithHost: _host
port: _port
socket: _socket
errNo: errNo];
[self didConnect];
return;
}
|
︙ | | |
Modified src/OFSPXSocket.h
from [771a7f3ff3]
to [7047954772].
︙ | | |
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
-
+
|
/**
* @brief Connect the OFSPXSocket to the specified destination.
*
* @param network The network on which the node to connect to is
* @param node The node to connect to
* @param port The port (sometimes also called socket number) on the node to
* connect to
* @throw OFConnectionFailedException Connecting failed
* @throw OFConnectSocketFailedException Connecting failed
* @throw OFAlreadyConnectedException The socket is already connected or bound
*/
- (void)connectToNetwork: (uint32_t)network
node: (const unsigned char [_Nonnull IPX_NODE_LEN])node
port: (uint16_t)port;
/**
|
︙ | | |
Modified src/OFSPXSocket.m
from [fcf21cbe34]
to [f57aab987d].
︙ | | |
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
-
+
|
#import "OFRunLoop.h"
#import "OFRunLoop+Private.h"
#import "OFSocket.h"
#import "OFSocket+Private.h"
#import "OFAlreadyConnectedException.h"
#import "OFBindIPXSocketFailedException.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
#import "OFNotOpenException.h"
#ifndef NSPROTO_SPX
# define NSPROTO_SPX 0
#endif
static const uint8_t SPXPacketType = 5;
|
︙ | | |
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
-
-
-
-
-
+
+
+
+
+
|
#ifdef OF_HAVE_BLOCKS
}
#endif
}
- (id)of_connectionFailedExceptionForErrNo: (int)errNo
{
return [OFConnectionFailedException exceptionWithNetwork: _network
node: _node
port: _port
socket: _socket
errNo: errNo];
return [OFConnectSocketFailedException exceptionWithNetwork: _network
node: _node
port: _port
socket: _socket
errNo: errNo];
}
@end
@implementation OFSPXSocket
@dynamic delegate;
- (int)of_createSocketForAddress: (const OFSocketAddress *)address
|
︙ | | |
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
-
+
-
+
|
node: (const unsigned char [IPX_NODE_LEN])node
port: (uint16_t)port
{
OFSocketAddress address = OFSocketAddressMakeIPX(network, node, port);
int errNo;
if (![self of_createSocketForAddress: &address errNo: &errNo])
@throw [OFConnectionFailedException
@throw [OFConnectSocketFailedException
exceptionWithNetwork: network
node: node
port: port
socket: self
errNo: errNo];
if (![self of_connectSocketToAddress: &address errNo: &errNo]) {
[self of_closeSocket];
@throw [OFConnectionFailedException
@throw [OFConnectSocketFailedException
exceptionWithNetwork: network
node: node
port: port
socket: self
errNo: errNo];
}
}
|
︙ | | |
Modified src/OFSPXStreamSocket.h
from [2d291aead3]
to [5118ed386d].
︙ | | |
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
-
+
|
/**
* @brief Connect the OFSPXStreamSocket to the specified destination.
*
* @param network The network on which the node to connect to is
* @param node The node to connect to
* @param port The port (sometimes also called socket number) on the node to
* connect to
* @throw OFConnectionFailedException Connecting failed
* @throw OFConnectSocketFailedException Connecting failed
* @throw OFAlreadyConnectedException The socket is already connected or bound
*/
- (void)connectToNetwork: (uint32_t)network
node: (const unsigned char [_Nonnull IPX_NODE_LEN])node
port: (uint16_t)port;
/**
|
︙ | | |
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
-
+
|
*
* @param network The IPX network to bind to. 0 means the current network.
* @param node The IPX network to bind to. An all zero node means the
* computer's node.
* @param port The port (sometimes called socket number) to bind to. 0 means to
* pick one and return via the returned socket address.
* @return The address on which this socket can be reached
* @throw OFConnectionFailedException Binding failed
* @throw OFConnectSocketFailedException Binding failed
* @throw OFAlreadyConnectedException The socket is already connected or bound
*/
- (OFSocketAddress)
bindToNetwork: (uint32_t)network
node: (const unsigned char [_Nonnull IPX_NODE_LEN])node
port: (uint16_t)port;
@end
OF_ASSUME_NONNULL_END
|
Modified src/OFSPXStreamSocket.m
from [a3edaa05ec]
to [0a64a8186a].
︙ | | |
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
-
+
|
#import "OFRunLoop.h"
#import "OFRunLoop+Private.h"
#import "OFSocket.h"
#import "OFSocket+Private.h"
#import "OFAlreadyConnectedException.h"
#import "OFBindIPXSocketFailedException.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
#import "OFNotOpenException.h"
#ifndef NSPROTO_SPX
# define NSPROTO_SPX 0
#endif
static const uint8_t SPXPacketType = 5;
|
︙ | | |
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
-
-
-
-
-
+
+
+
+
+
|
#ifdef OF_HAVE_BLOCKS
}
#endif
}
- (id)of_connectionFailedExceptionForErrNo: (int)errNo
{
return [OFConnectionFailedException exceptionWithNetwork: _network
node: _node
port: _port
socket: _socket
errNo: errNo];
return [OFConnectSocketFailedException exceptionWithNetwork: _network
node: _node
port: _port
socket: _socket
errNo: errNo];
}
@end
@implementation OFSPXStreamSocket
@dynamic delegate;
- (int)of_createSocketForAddress: (const OFSocketAddress *)address
|
︙ | | |
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
-
+
-
+
|
node: (const unsigned char [IPX_NODE_LEN])node
port: (uint16_t)port
{
OFSocketAddress address = OFSocketAddressMakeIPX(network, node, port);
int errNo;
if (![self of_createSocketForAddress: &address errNo: &errNo])
@throw [OFConnectionFailedException
@throw [OFConnectSocketFailedException
exceptionWithNetwork: network
node: node
port: port
socket: self
errNo: errNo];
if (![self of_connectSocketToAddress: &address errNo: &errNo]) {
[self of_closeSocket];
@throw [OFConnectionFailedException
@throw [OFConnectSocketFailedException
exceptionWithNetwork: network
node: node
port: port
socket: self
errNo: errNo];
}
}
|
︙ | | |
Modified src/OFTCPSocket.h
from [171e9901f1]
to [cc82674b9e].
︙ | | |
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
-
+
|
+ (uint16_t)SOCKS5Port;
/**
* @brief Connects the OFTCPSocket to the specified destination.
*
* @param host The host to connect to
* @param port The port on the host to connect to
* @throw OFConnectionFailedException Connecting failed
* @throw OFConnectSocketFailedException Connecting failed
* @throw OFAlreadyConnectedException The socket is already connected or bound
*/
- (void)connectToHost: (OFString *)host port: (uint16_t)port;
/**
* @brief Asynchronously connects the OFTCPSocket to the specified destination.
*
|
︙ | | |
Modified src/OFTCPSocketSOCKS5Connector.m
from [5abece8458]
to [5536c6da5c].
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
-
+
|
#include <errno.h>
#import "OFTCPSocketSOCKS5Connector.h"
#import "OFData.h"
#import "OFRunLoop.h"
#import "OFString.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
enum {
stateSendAuthentication = 1,
stateReadVersion,
stateSendRequest,
stateReadResponse,
stateReadAddress,
|
︙ | | |
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
-
+
|
runLoopMode = [OFRunLoop currentRunLoop].currentMode;
switch (_SOCKS5State) {
case stateReadVersion:
SOCKSVersion = buffer;
if (SOCKSVersion[0] != 5 || SOCKSVersion[1] != 0) {
_exception = [[OFConnectionFailedException alloc]
_exception = [[OFConnectSocketFailedException alloc]
initWithHost: _host
port: _port
socket: self
errNo: EPROTONOSUPPORT];
[self didConnect];
return false;
}
|
︙ | | |
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
-
+
|
_SOCKS5State = stateSendRequest;
[_socket asyncWriteData: _request runLoopMode: runLoopMode];
return false;
case stateReadResponse:
response = buffer;
if (response[0] != 5 || response[2] != 0) {
_exception = [[OFConnectionFailedException alloc]
_exception = [[OFConnectSocketFailedException alloc]
initWithHost: _host
port: _port
socket: self
errNo: EPROTONOSUPPORT];
[self didConnect];
return false;
}
|
︙ | | |
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
-
+
|
errNo = EPROTO;
#else
errNo = 0;
#endif
break;
}
_exception = [[OFConnectionFailedException alloc]
_exception = [[OFConnectSocketFailedException alloc]
initWithHost: _host
port: _port
socket: _socket
errNo: errNo];
[self didConnect];
return false;
}
|
︙ | | |
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
-
+
|
case 4: /* IPv6 */
_SOCKS5State = stateReadAddress;
[_socket asyncReadIntoBuffer: _buffer
exactLength: 16 + 2
runLoopMode: runLoopMode];
return false;
default:
_exception = [[OFConnectionFailedException alloc]
_exception = [[OFConnectSocketFailedException alloc]
initWithHost: _host
port: _port
socket: self
errNo: EPROTONOSUPPORT];
[self didConnect];
return false;
}
|
︙ | | |
Modified src/OFUNIXStreamSocket.h
from [dd9639b932]
to [fd1fe5978d].
︙ | | |
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
-
+
|
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
id <OFUNIXStreamSocketDelegate> delegate;
/**
* @brief Connects the OFUNIXStreamSocket to the specified destination.
*
* @param path The path to connect to
* @throw OFConnectionFailedException Connecting failed
* @throw OFConnectSocketFailedException Connecting failed
* @throw OFAlreadyConnectedException The socket is already connected or bound
*/
- (void)connectToPath: (OFString *)path;
/**
* @brief Binds the socket to the specified host and port.
*
|
︙ | | |
Modified src/OFUNIXStreamSocket.m
from [0dc4ba7cbd]
to [5f6af41045].
︙ | | |
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
|
-
+
-
+
+
-
-
-
+
+
+
|
#import "OFUNIXStreamSocket.h"
#import "OFSocket.h"
#import "OFSocket+Private.h"
#import "OFString.h"
#import "OFAlreadyConnectedException.h"
#import "OFBindUNIXSocketFailedException.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
@implementation OFUNIXStreamSocket
@dynamic delegate;
- (void)connectToPath: (OFString *)path
{
OFSocketAddress address;
#if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC)
int flags;
#endif
if (_socket != OFInvalidSocketHandle)
@throw [OFAlreadyConnectedException exceptionWithSocket: self];
address = OFSocketAddressMakeUNIX(path);
if ((_socket = socket(address.sockaddr.un.sun_family,
SOCK_STREAM | SOCK_CLOEXEC, 0)) == OFInvalidSocketHandle)
@throw [OFConnectionFailedException
@throw [OFConnectSocketFailedException
exceptionWithPath: path
socket: self
errNo: OFSocketErrNo()];
_canBlock = true;
#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 (connect(_socket, (struct sockaddr *)&address.sockaddr,
address.length) != 0) {
int errNo = OFSocketErrNo();
closesocket(_socket);
_socket = OFInvalidSocketHandle;
@throw [OFConnectSocketFailedException
@throw [OFConnectionFailedException exceptionWithPath: path
socket: self
errNo: errNo];
exceptionWithPath: path
socket: self
errNo: errNo];
}
}
- (void)bindToPath: (OFString *)path
{
OFSocketAddress address;
#if SOCK_CLOEXEC == 0 && defined(HAVE_FCNTL) && defined(FD_CLOEXEC)
|
︙ | | |
Modified src/ObjFW.h
from [700aa88375]
to [0422c9a348].
︙ | | |
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
-
+
|
#ifdef OF_HAVE_THREADS
# import "OFConditionBroadcastFailedException.h"
# import "OFConditionSignalFailedException.h"
# import "OFConditionStillWaitingException.h"
# import "OFConditionWaitFailedException.h"
#endif
#ifdef OF_HAVE_SOCKETS
# import "OFConnectionFailedException.h"
# import "OFConnectSocketFailedException.h"
#endif
#import "OFCopyItemFailedException.h"
#import "OFCreateDirectoryFailedException.h"
#import "OFCreateSymbolicLinkFailedException.h"
#ifdef OF_WINDOWS
# import "OFCreateWindowsRegistryKeyFailedException.h"
#endif
|
︙ | | |
Modified src/exceptions/Makefile
from [a3cc1fb55a]
to [3848851ce3].
︙ | | |
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
-
+
|
SRCS_FILES = OFChangeCurrentDirectoryFailedException.m \
OFGetCurrentDirectoryFailedException.m
SRCS_PLUGINS = OFLoadPluginFailedException.m
SRCS_SOCKETS = OFAcceptFailedException.m \
OFAlreadyConnectedException.m \
OFBindSocketFailedException.m \
OFBindIPSocketFailedException.m \
OFConnectionFailedException.m \
OFConnectSocketFailedException.m \
OFDNSQueryFailedException.m \
OFHTTPRequestFailedException.m \
OFListenFailedException.m \
OFObserveKernelEventsFailedException.m \
OFResolveHostFailedException.m \
OFTLSHandshakeFailedException.m \
${USE_SRCS_IPX} \
|
︙ | | |
Renamed and modified
src/exceptions/OFConnectionFailedException.h
[b07c5b14da]
to src/exceptions/OFConnectSocketFailedException.h
[33cd7aa514].
︙ | | |
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
-
+
+
+
-
+
-
+
|
#endif
#import "OFSocket.h"
OF_ASSUME_NONNULL_BEGIN
/**
* @class OFConnectionFailedException \
* OFConnectionFailedException.h ObjFW/OFConnectionFailedException.h
* @class OFConnectSocketFailedException \
* OFConnectSocketFailedException.h \
* ObjFW/OFConnectSocketFailedException.h
*
* @brief An exception indicating that a connection could not be established.
*/
@interface OFConnectionFailedException: OFException
@interface OFConnectSocketFailedException: OFException
{
OFString *_Nullable _host;
uint16_t _port;
OFString *_Nullable _path;
uint32_t _network;
unsigned char _node[IPX_NODE_LEN];
id _socket;
int _errNo;
OF_RESERVE_IVARS(OFConnectionFailedException, 4)
OF_RESERVE_IVARS(OFConnectSocketFailedException, 4)
}
/**
* @brief The host to which the connection failed.
*/
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *host;
|
︙ | | |
Renamed and modified
src/exceptions/OFConnectionFailedException.m
[d635dfc0b4]
to src/exceptions/OFConnectSocketFailedException.m
[029f1fa82c].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
#import "OFString.h"
@implementation OFConnectionFailedException
@implementation OFConnectSocketFailedException
@synthesize host = _host, port = _port, path = _path, network = _network;
@synthesize socket = _socket, errNo = _errNo;
+ (instancetype)exceptionWithHost: (OFString *)host
port: (uint16_t)port
socket: (id)sock
errNo: (int)errNo
|
︙ | | |
Modified utils/ofhttp/OFHTTP.m
from [2267fb0c48]
to [36f1e9db6a].
︙ | | |
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
-
+
|
#import "OFTLSStream.h"
#import "OFURI.h"
#ifdef HAVE_TLS_SUPPORT
# import "ObjFWTLS.h"
#endif
#import "OFConnectionFailedException.h"
#import "OFConnectSocketFailedException.h"
#import "OFGetItemAttributesFailedException.h"
#import "OFHTTPRequestFailedException.h"
#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFInvalidServerResponseException.h"
#import "OFOpenItemFailedException.h"
#import "OFOutOfRangeException.h"
|
︙ | | |
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
|
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
|
-
+
|
OF_LOCALIZED(@"download_resolve_host_failed",
@"%[prog]: Failed to download <%[uri]>!\n"
@" Failed to resolve host: %[exception]",
@"prog", [OFApplication programName],
@"uri", request.URI.string,
@"exception", exception)];
} else if ([exception isKindOfClass:
[OFConnectionFailedException class]]) {
[OFConnectSocketFailedException class]]) {
if (!_quiet)
[OFStdOut writeString: @"\n"];
[OFStdErr writeLine:
OF_LOCALIZED(@"download_failed_connection_failed",
@"%[prog]: Failed to download <%[uri]>!\n"
@" Connection failed: %[exception]",
|
︙ | | |