ObjFW  Diff

Differences From Artifact [5cdf80c1e6]:

To Artifact [06e819f56f]:


126
127
128
129
130
131
132






133
134
135



136
137
138
139
140
141
142
126
127
128
129
130
131
132
133
134
135
136
137
138



139
140
141
142
143
144
145
146
147
148







+
+
+
+
+
+
-
-
-
+
+
+








	events = (intptr_t)[_FDToEvents
	    objectForKey: (void *)((intptr_t)fd + 1)];
	events &= ~removeEvents;

	if (events == 0) {
		if (epoll_ctl(_epfd, EPOLL_CTL_DEL, fd, NULL) == -1)
			/*
			 * When an async connect fails, it seems the socket is
			 * automatically removed from epoll, meaning ENOENT is
			 * returned when we try to remove it after it failed.
			 */
			if (errno != ENOENT)
			@throw [OFObserveFailedException
			    exceptionWithObserver: self
					    errNo: errno];
				@throw [OFObserveFailedException
				    exceptionWithObserver: self
						    errNo: errno];

		[_FDToEvents removeObjectForKey: (void *)((intptr_t)fd + 1)];
	} else {
		struct epoll_event event;

		memset(&event, 0, sizeof(event));
		event.events = (int)events;