From 262185d8223bb9e936b29394d10ab5ae1e2e757c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 14 Jul 2014 13:43:08 +0200 Subject: [PATCH] build and run against libwebsockets 1.3 --- NEWS | 8 +++++++- configure.ac | 3 +++ jackwsmeter.c | 26 +++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 952a526..1e20d91 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,11 @@ ========= -Version 1 +Version 2 (unreleased) +========= + + - Build and run against libwebsockets 1.3 + +========= +Version 1 (2014-07-05) ========= Initial release. diff --git a/configure.ac b/configure.ac index afefd54..1e4bafb 100644 --- a/configure.ac +++ b/configure.ac @@ -13,6 +13,9 @@ PKG_CHECK_MODULES(WEBSOCKETS, libwebsockets) AC_CHECK_LIB(websockets, lws_daemonize, [true], [AC_DEFINE(LWS_NO_DAEMONIZE)]) AC_CHECK_LIB(websockets, libwebsocket_get_internal_extensions, [true], [AC_DEFINE(LWS_NO_EXTENSIONS)]) +PKG_CHECK_EXISTS(libwebsockets >= 1.2, [AC_DEFINE(LWS_12)], []) +PKG_CHECK_EXISTS(libwebsockets >= 1.3, [AC_DEFINE(LWS_13)], []) + PKG_CHECK_MODULES(JACK, jack >= 0.100.0) AC_SUBST(JACK_CFLAGS) AC_SUBST(JACK_LIBS) diff --git a/jackwsmeter.c b/jackwsmeter.c index 4be8556..7b728d6 100644 --- a/jackwsmeter.c +++ b/jackwsmeter.c @@ -77,8 +77,12 @@ static int callback_http(struct libwebsocket_context *context, void *in, size_t len) { int m; - int fd = (int)(long)user; char *html_filepath; +#ifdef LWS_13 + struct libwebsocket_pollargs *pa = (struct libwebsocket_pollargs *)in; +#else + int fd = (int)(long)user; +#endif switch (reason) { case LWS_CALLBACK_HTTP: @@ -89,7 +93,11 @@ static int callback_http(struct libwebsocket_context *context, * on the current directory. */ strcpy(html_filepath, "jackwsmeter.html"); } +#ifdef LWS_13 + if (libwebsockets_serve_http_file(context, wsi, html_filepath, "text/html", NULL)) { +#else if (libwebsockets_serve_http_file(context, wsi, html_filepath, "text/html")) { +#endif free(html_filepath); return 1; /* through completion or error, close the socket */ } @@ -107,21 +115,36 @@ static int callback_http(struct libwebsocket_context *context, return 1; } +#ifdef LWS_13 + fd_lookup[pa->fd] = count_pollfds; + pollfds[count_pollfds].fd = pa->fd; + pollfds[count_pollfds].events = pa->events; +#else fd_lookup[fd] = count_pollfds; pollfds[count_pollfds].fd = fd; pollfds[count_pollfds].events = (int)(long)len; +#endif pollfds[count_pollfds++].revents = 0; break; case LWS_CALLBACK_DEL_POLL_FD: if (!--count_pollfds) break; +#ifdef LWS_13 + m = fd_lookup[pa->fd]; +#else m = fd_lookup[fd]; +#endif /* have the last guy take up the vacant slot */ pollfds[m] = pollfds[count_pollfds]; fd_lookup[pollfds[count_pollfds].fd] = m; break; +#ifdef LWS_13 + case LWS_CALLBACK_CHANGE_MODE_POLL_FD: + pollfds[fd_lookup[pa->fd]].events = pa->events; + break; +#else case LWS_CALLBACK_SET_MODE_POLL_FD: pollfds[fd_lookup[fd]].events |= (int)(long)len; break; @@ -129,6 +152,7 @@ static int callback_http(struct libwebsocket_context *context, case LWS_CALLBACK_CLEAR_MODE_POLL_FD: pollfds[fd_lookup[fd]].events &= ~(int)(long)len; break; +#endif default: break; -- 2.39.2