summaryrefslogtreecommitdiffstats
path: root/src/plugins/http_static
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2019-06-12 14:28:14 +0200
committerPaul Vinciguerra <pvinci@vinciconsulting.com>2019-06-18 11:47:21 +0000
commit283cd2e9afcab1407d5614d79da4354790fa059a (patch)
tree21ff50ec22a5f9989bfdee76fcbb418ada91232f /src/plugins/http_static
parenta8c0b62a88494e9a8562c57dfd3fd75818a629a7 (diff)
api: string type to convert to vector
Previous use of strndup() required user to remember to call free(). Now return a vector pointing directly to the API message string. Of course user must remember to copy the string out if lifetime is longer than API message lifetime. Change-Id: Ib5e2b3d52d258e1a42ea9ea9a9e04abbe360e2bf Type: fix Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/plugins/http_static')
-rw-r--r--src/plugins/http_static/http_static.c16
-rw-r--r--src/plugins/http_static/http_static_test.c1
2 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/http_static/http_static.c b/src/plugins/http_static/http_static.c
index 41601f96321..d380665f1e2 100644
--- a/src/plugins/http_static/http_static.c
+++ b/src/plugins/http_static/http_static.c
@@ -22,6 +22,7 @@
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
#include <vpp/app/version.h>
+#include <vlibapi/api_types_inlines.h>
/* define message IDs */
#include <http_static/http_static_msg_enum.h>
@@ -66,16 +67,13 @@ static void vl_api_http_static_enable_t_handler
vl_api_http_static_enable_reply_t *rmp;
http_static_main_t *hmp = &http_static_main;
int rv;
- u8 *www_root;
- u8 *uri;
+ u8 *www_root = 0;
+ u8 *uri = 0;
char *p = (char *) &mp->www_root;
- www_root =
- format (0, "%s%c", vl_api_from_api_string_c ((vl_api_string_t *) p), 0),
- p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t);
- uri =
- format (0, "%s%c", vl_api_from_api_string_c ((vl_api_string_t *) p), 0);
-
+ www_root = vl_api_from_api_to_vec ((vl_api_string_t *) p);
+ p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t);
+ uri = vl_api_from_api_to_vec ((vl_api_string_t *) p);
rv = http_static_server_enable_api
(ntohl (mp->fifo_size),
@@ -83,6 +81,8 @@ static void vl_api_http_static_enable_t_handler
ntohl (mp->prealloc_fifos),
ntohl (mp->private_segment_size), www_root, uri);
+ vec_free (www_root);
+ vec_free (uri);
REPLY_MACRO (VL_API_HTTP_STATIC_ENABLE_REPLY);
}
diff --git a/src/plugins/http_static/http_static_test.c b/src/plugins/http_static/http_static_test.c
index 0720463cf63..ec715725148 100644
--- a/src/plugins/http_static/http_static_test.c
+++ b/src/plugins/http_static/http_static_test.c
@@ -18,6 +18,7 @@
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
#include <vppinfra/error.h>
+#include <vlibapi/api_types_inlines.h>
uword unformat_sw_if_index (unformat_input_t * input, va_list * args);