ObjFW  Check-in [c5e3f0094c]

Overview
Comment:OFTCPSocket+SOCKS5.m: Small type fixes
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: c5e3f0094c1233e30bd45f9f16d6ab709cb72b5689279bb5c0f3d4139a95d902
User & Date: js on 2016-05-28 15:26:28
Other Links: manifest | tags
Context
2016-05-28
19:42
OFStream: Free the right variable check-in: 28fe0a104d user: js tags: trunk
15:26
OFTCPSocket+SOCKS5.m: Small type fixes check-in: c5e3f0094c user: js tags: trunk
14:56
OFKernelEventObserver_select: Cast to of_socket_t check-in: e74fc30f5b user: js tags: trunk
Changes

Modified src/OFTCPSocket+SOCKS5.m from [5b08ee4ef4] to [785ede0c63].

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
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







-
+
-
-
+
-
-
-
+
+







-
+








#import "socket_helpers.h"

/* Reference for static linking */
int _OFTCPSocket_SOCKS5_reference;

static void
send_or_exception(OFTCPSocket *self, int socket, char *buffer, size_t length)
send_or_exception(OFTCPSocket *self, of_socket_t socket, char *buffer,
{
	if (length > SSIZE_MAX)
    int length)
		@throw [OFOutOfRangeException exception];

	if (send(socket, buffer, length, 0) != (ssize_t)length)
{
	if (send(socket, buffer, length, 0) != length)
		@throw [OFWriteFailedException
		    exceptionWithObject: self
			requestedLength: length
				  errNo: of_socket_errno()];
}

static void
recv_exact(OFTCPSocket *self, int socket, char *buffer, size_t length)
recv_exact(OFTCPSocket *self, of_socket_t socket, char *buffer, int length)
{
	while (length > 0) {
		ssize_t ret = recv(socket, buffer, length, 0);

		if (ret < 0)
			@throw [OFReadFailedException
			    exceptionWithObject: self
96
97
98
99
100
101
102



103
104

105
106
107
108
109
110
111
94
95
96
97
98
99
100
101
102
103
104

105
106
107
108
109
110
111
112







+
+
+

-
+







			   count: request[0]];

	request[0] = port >> 8;
	request[1] = port & 0xFF;
	[connectRequest addItems: request
			   count: 2];

	if ([connectRequest count] > INT_MAX)
		@throw [OFOutOfRangeException exception];

	send_or_exception(self, _socket,
	    [connectRequest items], [connectRequest count]);
	    [connectRequest items], (int)[connectRequest count]);

	objc_autoreleasePoolPop(pool);

	recv_exact(self, _socket, reply, 4);

	if (reply[0] != 5 || reply[1] != 0 || reply[2] != 0) {
		[self close];