if (libwebsockets_serve_http_file(wsi,
LOCAL_RESOURCE_PATH"/test.html", "text/html"))
fprintf(stderr, "Failed to send HTTP file\n");
- break;
+ /* we are done with this connnection */
+ return 1;
/*
* callback for confirming to continue with client IP appear in
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);
}
static struct option options[] = {
{ "help", no_argument, NULL, 'h' },
+ { "debug", required_argument, NULL, 'd' },
{ "port", required_argument, NULL, 'p' },
{ "ssl", no_argument, NULL, 's' },
{ "killmask", no_argument, NULL, 'k' },
"licensed under LGPL2.1\n");
while (n >= 0) {
- n = getopt_long(argc, argv, "i:khsp:", options, NULL);
+ n = getopt_long(argc, argv, "i:khsp:d:", options, NULL);
if (n < 0)
continue;
switch (n) {
+ case 'd':
+ lws_set_log_level(atoi(optarg), NULL);
+ break;
case 's':
use_ssl = 1;
break;
break;
case 'h':
fprintf(stderr, "Usage: test-server "
- "[--port=<p>] [--ssl]\n");
+ "[--port=<p>] [--ssl] "
+ "[-d <log bitfield>]\n");
exit(1);
}
}
context = libwebsocket_create_context(port, interface_ptr, protocols,
libwebsocket_internal_extensions,
- cert_path, key_path, -1, -1, opts);
+ cert_path, key_path, NULL, -1, -1,
+ opts, NULL);
if (context == NULL) {
fprintf(stderr, "libwebsocket init failed\n");
return -1;
* match anything under libwebsockets
* control
*/
- libwebsocket_service_fd(context,
- &pollfds[n]);
+ if (libwebsocket_service_fd(context,
+ &pollfds[n]))
+ goto done;
/* do our broadcast periodically */