break;
case LWS_CALLBACK_DEL_POLL_FD:
- for (n = 0; n < count_pollfds; n++)
- if (pollfds[n].fd == (int)(long)user)
- while (n < count_pollfds) {
- pollfds[n] = pollfds[n + 1];
- n++;
- }
- count_pollfds--;
+ for (n = 0; n < count_pollfds; n++) {
+ if (pollfds[n].fd != (int)(long)user)
+ continue;
+ /*
+ * swap the end guy into our vacant slot...
+ * works ok if n is the end guy
+ */
+ pollfds[n] = pollfds[count_pollfds - 1];
+ pollfds[count_pollfds - 1].fd = -1;
+ count_pollfds--;
+ break;
+ }
break;
case LWS_CALLBACK_SET_MODE_POLL_FD:
n = sprintf((char *)p, "%d", pss->number++);
n = libwebsocket_write(wsi, p, n, LWS_WRITE_TEXT);
if (n < 0) {
- fprintf(stderr, "ERROR writing to socket");
+ fprintf(stderr, "ERROR %d writing to socket\n", n);
return 1;
}
break;
LWS_WRITE_TEXT);
if (n < 0) {
- fprintf(stderr, "ERROR writing to socket");
+ fprintf(stderr, "ERROR %d writing to socket\n", n);
exit(1);
}