ObjFW  Diff

Differences From Artifact [02e9d8a16c]:

To Artifact [395d4dcdd4]:


68
69
70
71
72
73
74
75

76
77
78
79
80
81
82
68
69
70
71
72
73
74

75
76
77
78
79
80
81
82







-
+







	@try {
		if (self.class == [OFSequencedPacketSocket class]) {
			[self doesNotRecognizeSelector: _cmd];
			abort();
		}

		_socket = INVALID_SOCKET;
		_blocking = true;
		_canBlock = true;
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;
}
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
132
133
134

135
136

137
138
139
140
141
142
143

144
145
146
147
148
149
150
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
132
133

134
135

136
137
138
139
140
141
142

143
144
145
146
147
148
149
150







-
+

-
+


-
+








-
+








-
+

-
+






-
+







#endif

- (id)copy
{
	return [self retain];
}

- (bool)isBlocking
- (bool)canBlock
{
	return _blocking;
	return _canBlock;
}

- (void)setBlocking: (bool)enable
- (void)setCanBlock: (bool)canBlock
{
#if defined(HAVE_FCNTL)
	int flags = fcntl(_socket, F_GETFL, 0);

	if (flags == -1)
		@throw [OFSetOptionFailedException exceptionWithObject: self
								 errNo: errno];

	if (enable)
	if (canBlock)
		flags &= ~O_NONBLOCK;
	else
		flags |= O_NONBLOCK;

	if (fcntl(_socket, F_SETFL, flags) == -1)
		@throw [OFSetOptionFailedException exceptionWithObject: self
								 errNo: errno];

	_blocking = enable;
	_canBlock = canBlock;
#elif defined(OF_WINDOWS)
	u_long v = enable;
	u_long v = canBlock;

	if (ioctlsocket(_socket, FIONBIO, &v) == SOCKET_ERROR)
		@throw [OFSetOptionFailedException
		    exceptionWithObject: self
				  errNo: of_socket_errno()];

	_blocking = enable;
	_canBlock = canBlock;
#else
	OF_UNRECOGNIZED_SELECTOR
#endif
}

- (size_t)receiveIntoBuffer: (void *)buffer
		     length: (size_t)length