From d1932d1b4f43500049f5b6aa62d3b42acd93f878 Mon Sep 17 00:00:00 2001 From: Peter Meerwald-Stadler Date: Fri, 24 Nov 2017 21:13:01 +0100 Subject: [PATCH 1/8] sip_ua: Fix some typos --- src/sip_ua/sip_ua.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sip_ua/sip_ua.c b/src/sip_ua/sip_ua.c index a7daa2b..00dcb8c 100644 --- a/src/sip_ua/sip_ua.c +++ b/src/sip_ua/sip_ua.c @@ -8,8 +8,8 @@ * $ ./sip_ua * * - * To test otbound calls, invoke with a SIP URI argument. - * sip_will will invite provided URI: + * To test outbound calls, invoke with a SIP URI argument. + * sip_ua will invite provided URI: * * $ ./sip_ua sip:echo@creytiv.com * @@ -269,7 +269,7 @@ static void exit_handler(void *arg) } -/* called upon reception of SIGINT, SIGALRM or SIGTERM */ +/* called upon reception of SIGINT, SIGALRM or SIGTERM */ static void signal_handler(int sig) { re_printf("terminating on signal %d...\n", sig); @@ -436,7 +436,7 @@ int main(int argc, char *argv[]) mem_deref(sip); mem_deref(dnsc); - /* free librar state */ + /* free libre state */ libre_close(); /* check for memory leaks */ From 3a3c47daab3f7d08e9d072c6d6be9bf383abf509 Mon Sep 17 00:00:00 2001 From: "Alfred E. Heggestad" Date: Thu, 18 Jan 2018 15:26:25 +0100 Subject: [PATCH 2/8] sip_ua: update SIP register client --- src/sip_ua/sip_ua.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sip_ua/sip_ua.c b/src/sip_ua/sip_ua.c index 00dcb8c..185b472 100644 --- a/src/sip_ua/sip_ua.c +++ b/src/sip_ua/sip_ua.c @@ -413,7 +413,8 @@ int main(int argc, char *argv[]) } else { - err = sipreg_register(®, sip, registrar, uri, uri, 60, name, + err = sipreg_register(®, sip, registrar, uri, + NULL, uri, 60, name, NULL, 0, 0, auth_handler, NULL, false, register_handler, NULL, NULL, NULL); if (err) { From ec583ae0738f85346f6aee968570c3feb763baab Mon Sep 17 00:00:00 2001 From: "Alfred E. Heggestad" Date: Mon, 29 Jan 2018 11:06:16 +0100 Subject: [PATCH 3/8] bump version to 0.5.0 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4a76c0b..bc2d9f3 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ # PROJECT := redemo -VERSION := 0.4.1 +VERSION := 0.5.0 DEMOS += sip_ua DEMOS += tcp_server From 34580325f3c2a713183895dd51085b7af7194f16 Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Thu, 25 Oct 2018 10:54:48 +0200 Subject: [PATCH 4/8] tcp_server comment: s/UDP/TCP (#2) --- src/tcp_server/tcp_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tcp_server/tcp_server.c b/src/tcp_server/tcp_server.c index 1876209..362136c 100644 --- a/src/tcp_server/tcp_server.c +++ b/src/tcp_server/tcp_server.c @@ -136,7 +136,7 @@ int main(void) (void)sa_set_str(&laddr, "0.0.0.0", 3456); - /* Create listening UDP socket, IP address 0.0.0.0, TCP port 3456 */ + /* Create listening TCP socket, IP address 0.0.0.0, TCP port 3456 */ err = tcp_listen(&ts, &laddr, connect_handler, NULL); if (err) { re_fprintf(stderr, "tcp listen error: %s\n", strerror(err)); From 697d9bfe400b427a70bafefcb118839055d1b088 Mon Sep 17 00:00:00 2001 From: "Alfred E. Heggestad" Date: Mon, 29 Oct 2018 10:13:16 +0100 Subject: [PATCH 5/8] add travis build (#4) --- .travis.yml | 15 +++++++++++++++ README.md | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..a1ad3d8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: c + +before_install: + - sudo apt-get -qq update + - sudo apt-get -y install libssl-dev + +install: + - git clone https://github.com/creytiv/re.git + - cd re && make && sudo make install && cd .. + - sudo ldconfig + - wget "https://github.com/alfredh/pytools/raw/master/ccheck.py" + +script: + - make EXTRA_CFLAGS=-Werror + - python2 ccheck.py diff --git a/README.md b/README.md index 5b2fb53..8bd3232 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,5 @@ redemo ====== Demo example applications using libre + +[![Build Status](https://travis-ci.org/creytiv/redemo.svg?branch=master)](https://travis-ci.org/creytiv/redemo) From ad1aef942148195bed4ad05c2155ce50824877ba Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Sun, 11 Nov 2018 14:49:27 +0100 Subject: [PATCH 6/8] add websocket server demo (#3) --- .gitignore | 1 + Makefile | 1 + src/websocket_server/demo.mk | 11 ++ src/websocket_server/websocket_server.c | 171 ++++++++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 src/websocket_server/demo.mk create mode 100644 src/websocket_server/websocket_server.c diff --git a/.gitignore b/.gitignore index a4220f5..ea32152 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ build-* sip_ua udp_server tcp_server +websocket_server diff --git a/Makefile b/Makefile index bc2d9f3..b0916c4 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ VERSION := 0.5.0 DEMOS += sip_ua DEMOS += tcp_server DEMOS += udp_server +DEMOS += websocket_server LIBRE_MK := $(shell [ -f ../re/mk/re.mk ] && \ diff --git a/src/websocket_server/demo.mk b/src/websocket_server/demo.mk new file mode 100644 index 0000000..081a6f2 --- /dev/null +++ b/src/websocket_server/demo.mk @@ -0,0 +1,11 @@ +# +# demo.mk +# +# Copyright (C) 2011 Creytiv.com +# + +DEMO := websocket_server +$(DEMO)_SRCS += websocket_server.c +$(DEMO)_LFLAGS += + +include mk/dmo.mk diff --git a/src/websocket_server/websocket_server.c b/src/websocket_server/websocket_server.c new file mode 100644 index 0000000..1c5cec3 --- /dev/null +++ b/src/websocket_server/websocket_server.c @@ -0,0 +1,171 @@ +/** + * @file websocket_server.c Websocket Server Demo + * + * The demo can for instance be tested by pasting this into + * a web browser javascript console: + * var ws = new WebSocket('ws://localhost:3456'); + * ws.addEventListener('open', () => ws.send('hello')); + * ws.addEventListener('close', (e) => console.log('close', e)); + * ws.addEventListener('message', (e) => console.log('msg', e)); + * + * Copyright (C) 2018 Creytiv.com + */ + +#include + + +struct websocket { + struct le le; /* list entry */ + struct websock_conn *conn; /* Websocket connection */ +}; + +static struct websock *server; + +/* Linked list of active Websocket connections */ +static struct list connl; + +/* called upon reception of SIGINT, SIGALRM or SIGTERM */ +static void signal_handler(int sig) +{ + re_printf("terminating on signal %d...\n", sig); + + /* destroy active Websocket connections */ + list_flush(&connl); + + websock_shutdown(server); +} + + +static void websock_shutdown_handler(void *arg) +{ + (void)arg; + re_printf("websocket server shutting down\n"); + + /* stop libre main loop */ + re_cancel(); +} + + +/* destructor called when reference count on conn reach zero */ +static void destructor(void *arg) +{ + struct websocket *ws = arg; + + /* remove this connection entry from the list */ + list_unlink(&ws->le); + + /* clean up local Websocket connection state */ + mem_deref(ws->conn); +} + + +/* called when a message is received from the other side */ +static void srv_websock_recv_handler(const struct websock_hdr *hdr, + struct mbuf *mb, void *arg) +{ + struct websocket *ws = arg; + int err; + + err = websock_send(ws->conn, hdr->opcode, "%b", + mbuf_buf(mb), mbuf_get_left(mb)); + if (err) + re_fprintf(stderr, "ws send error: %m\n", err); +} + + +/* called when the websocket is closed by the other side */ +static void srv_websock_close_handler(int err, void *arg) +{ + struct websocket *ws = arg; + + re_printf("ws close %m\n", err); + mem_deref(ws); +} + + +/* HTTP request handler */ +static void http_req_handler(struct http_conn *conn, + const struct http_msg *msg, void *arg) +{ + struct websocket *ws; + int err; + + /* allocate connection state */ + ws = mem_zalloc(sizeof(*ws), destructor); + if (!ws) { + err = ENOMEM; + re_fprintf(stderr, "http req handler alloc error: %m\n", err); + goto out; + } + + err = websock_accept(&ws->conn, server, conn, msg, + 0, srv_websock_recv_handler, + srv_websock_close_handler, ws); + if (err) { + re_fprintf(stderr, "websocket accept error: %m\n", err); + goto out; + } + + /* append connection to connection list */ + list_append(&connl, &ws->le, ws); + out: + if (err) { + http_reply(conn, 500, "Server Error", NULL); + /* destroy state */ + mem_deref(ws); + } +} + + +int main(void) +{ + struct sa laddr; + struct http_sock *httpsock = NULL; + int err; /* errno return values */ + + /* enable coredumps to aid debugging */ + (void)sys_coredump_set(true); + + /* initialize libre state */ + err = libre_init(); + if (err) { + re_fprintf(stderr, "re init failed: %m\n", err); + goto out; + } + + (void)sa_set_str(&laddr, "0.0.0.0", 3456); + + /* Create listening HTTP server, IP address 0.0.0.0, TCP port 3456 */ + err = http_listen(&httpsock, &laddr, http_req_handler, NULL); + if (err) { + re_fprintf(stderr, "http listen error: %m\n", err); + goto out; + } + + err = websock_alloc(&server, websock_shutdown_handler, NULL); + if (err) { + re_fprintf(stderr, "websocket alloc error: %m\n", err); + goto out; + } + + re_printf("listening on WS socket: %J\n", &laddr); + + /* main loop */ + err = re_main(signal_handler); + + out: + /* free HTTP socket */ + httpsock = mem_deref(httpsock); + + /* free Websocket server */ + server = mem_deref(server); + + /* free library state */ + libre_close(); + + /* check for memory leaks */ + tmr_debug(); + mem_debug(); + + return err; +} From b4336bd6c4c3c431dcb2ec371edff685fa142cda Mon Sep 17 00:00:00 2001 From: "Alfred E. Heggestad" Date: Fri, 23 Nov 2018 12:25:13 +0100 Subject: [PATCH 7/8] bump to version 0.6.0 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b0916c4..c61e366 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ # PROJECT := redemo -VERSION := 0.5.0 +VERSION := 0.6.0 DEMOS += sip_ua DEMOS += tcp_server From c34766ddeb35489d9c22ed5088a3038a0ed1db32 Mon Sep 17 00:00:00 2001 From: Richard Aas Date: Wed, 27 Jan 2021 10:24:31 +0100 Subject: [PATCH 8/8] .gitignore: added / prefix --- .gitignore | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index ea32152..50d8acd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,23 @@ # Object files -*.o -*.ko +/*.o +/*.ko # Libraries -*.lib -*.a +/*.lib +/*.a # Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib +/*.dll +/*.so +/*.so.* +/*.dylib # Executables -*.exe -*.out -*.app - -build-* -sip_ua -udp_server -tcp_server -websocket_server - +/*.exe +/*.out +/*.app +/build-* +/sip_ua +/udp_server +/tcp_server +/websocket_server