From e198d155ae66fb0940362e7a6b8251999956059b Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sun, 12 Jan 2025 14:48:48 -0800 Subject: http: status is an enum This is slightly less efficient, but it provides for better debugging and type safety. --- src/supplemental/http/http_api.h | 20 +++++++++---------- src/supplemental/http/http_conn.c | 34 ++++++++++++++++----------------- src/supplemental/http/http_public.c | 10 +++++----- src/supplemental/http/http_server.c | 38 ++++++++++++++++++------------------- 4 files changed, 51 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/supplemental/http/http_api.h b/src/supplemental/http/http_api.h index 63a4adab..846d1c19 100644 --- a/src/supplemental/http/http_api.h +++ b/src/supplemental/http/http_api.h @@ -106,7 +106,7 @@ extern int nni_http_conn_getopt( // must not use them for any other purpose. extern int nni_http_req_alloc(nni_http_req **, const nng_url *); -extern int nni_http_res_set_error(nni_http_res *, uint16_t); +extern int nni_http_res_set_error(nni_http_res *, nng_http_status); extern void nni_http_req_free(nni_http_req *); extern void nni_http_res_free(nni_http_res *); extern void nni_http_write_req(nni_http_conn *, nni_aio *); @@ -202,7 +202,7 @@ extern void nni_http_server_close(nni_http_server *); // nni_http_server_set_error_page sets an error page for the named status. extern int nni_http_server_set_error_page( - nni_http_server *, uint16_t, const char *); + nni_http_server *, nng_http_status, const char *); // nni_http_server_res_error takes replaces the body of the res with // a custom error page previously set for the server, using the status @@ -255,7 +255,7 @@ extern int nni_http_handler_init_static( // nni_http_handler_init_redirect creates a handler that redirects the request. extern int nni_http_handler_init_redirect( - nni_http_handler **, const char *, uint16_t, const char *); + nni_http_handler **, const char *, nng_http_status, const char *); // nni_http_handler_fini destroys a handler. This should only be done before // the handler is added, or after it is deleted. The server automatically @@ -356,21 +356,21 @@ extern void nni_http_set_method(nng_http *conn, const char *method); extern const char *nni_http_get_method(nng_http *conn); extern void nni_http_set_status( - nng_http *conn, uint16_t status, const char *reason); + nng_http *conn, nng_http_status status, const char *reason); -extern uint16_t nni_http_get_status(nng_http *); -extern const char *nni_http_get_reason(nng_http *); +extern nng_http_status nni_http_get_status(nng_http *); +extern const char *nni_http_get_reason(nng_http *); // nni_http_set_error flags an error using the built in HTML page. // unless body is not NULL. To pass no content, pass an empty string for body. -extern int nni_http_set_error( - nng_http *conn, uint16_t status, const char *reason, const char *body); +extern int nni_http_set_error(nng_http *conn, nng_http_status status, + const char *reason, const char *body); // nni_http_set_redirect is used to set the redirection. // It uses a built-in error page, with a message about the redirection, and // sets the response Location: header accordingly. -extern int nni_http_set_redirect( - nng_http *conn, uint16_t status, const char *reason, const char *dest); +extern int nni_http_set_redirect(nng_http *conn, nng_http_status status, + const char *reason, const char *dest); extern int nni_http_set_uri( nng_http *conn, const char *uri, const char *query); diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c index d4cea914..169ac75e 100644 --- a/src/supplemental/http/http_conn.c +++ b/src/supplemental/http/http_conn.c @@ -62,13 +62,13 @@ struct nng_http_conn { nng_http_req req; nng_http_res res; - uint16_t code; - char meth[32]; - char host[260]; // 253 per IETF, plus 6 for :port plus null - char ubuf[200]; // Most URIs are smaller than this - const char *vers; - char *uri; - char *rsn; + nng_http_status code; + char meth[32]; + char host[260]; // 253 per IETF, plus 6 for :port plus null + char ubuf[200]; // Most URIs are smaller than this + const char *vers; + char *uri; + char *rsn; uint8_t *buf; size_t bufsz; @@ -880,7 +880,7 @@ nni_http_get_method(nng_http *conn) return (conn->meth); } -uint16_t +nng_http_status nni_http_get_status(nng_http *conn) { if (conn->code == 0) { @@ -890,11 +890,11 @@ nni_http_get_status(nng_http *conn) } const char * -nni_http_reason(uint16_t code) +nni_http_reason(nng_http_status code) { static struct { - uint16_t code; - const char *mesg; + nng_http_status code; + const char *mesg; } http_status[] = { // 200, listed first because most likely { NNG_HTTP_STATUS_OK, "OK" }, @@ -996,7 +996,7 @@ nni_http_get_reason(nng_http *conn) } void -nni_http_set_status(nng_http *conn, uint16_t status, const char *reason) +nni_http_set_status(nng_http *conn, nng_http_status status, const char *reason) { conn->code = status; char *dup = NULL; @@ -1023,7 +1023,7 @@ nni_http_is_error(nng_http *conn) } static int -http_conn_set_error(nng_http *conn, uint16_t status, const char *reason, +http_conn_set_error(nng_http *conn, nng_http_status status, const char *reason, const char *body, const char *redirect) { char content[1024]; @@ -1082,15 +1082,15 @@ http_conn_set_error(nng_http *conn, uint16_t status, const char *reason, } int -nni_http_set_error( - nng_http *conn, uint16_t status, const char *reason, const char *body) +nni_http_set_error(nng_http *conn, nng_http_status status, const char *reason, + const char *body) { return (http_conn_set_error(conn, status, reason, body, NULL)); } int -nni_http_set_redirect( - nng_http *conn, uint16_t status, const char *reason, const char *redirect) +nni_http_set_redirect(nng_http *conn, nng_http_status status, + const char *reason, const char *redirect) { char *loc; bool static_value = false; diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c index 1152729d..84477cc1 100644 --- a/src/supplemental/http/http_public.c +++ b/src/supplemental/http/http_public.c @@ -138,7 +138,7 @@ nng_http_get_version(nng_http *conn) } void -nng_http_set_status(nng_http *conn, uint16_t status, const char *reason) +nng_http_set_status(nng_http *conn, nng_http_status status, const char *reason) { #ifdef NNG_SUPP_HTTP nni_http_set_status(conn, status, reason); @@ -149,7 +149,7 @@ nng_http_set_status(nng_http *conn, uint16_t status, const char *reason) #endif } -uint16_t +nng_http_status nng_http_get_status(nng_http *conn) { #ifdef NNG_SUPP_HTTP @@ -347,8 +347,8 @@ nng_http_handler_alloc_directory( } nng_err -nng_http_handler_alloc_redirect( - nng_http_handler **hp, const char *uri, uint16_t status, const char *where) +nng_http_handler_alloc_redirect(nng_http_handler **hp, const char *uri, + nng_http_status status, const char *where) { #ifdef NNG_SUPP_HTTP return (nni_http_handler_init_redirect(hp, uri, status, where)); @@ -502,7 +502,7 @@ nng_http_server_del_handler(nng_http_server *srv, nng_http_handler *h) nng_err nng_http_server_set_error_page( - nng_http_server *srv, uint16_t code, const char *body) + nng_http_server *srv, nng_http_status code, const char *body) { #ifdef NNG_SUPP_HTTP return (nni_http_server_set_error_page(srv, code, body)); diff --git a/src/supplemental/http/http_server.c b/src/supplemental/http/http_server.c index 0092299d..ce696ac5 100644 --- a/src/supplemental/http/http_server.c +++ b/src/supplemental/http/http_server.c @@ -66,9 +66,9 @@ typedef struct http_sconn { } http_sconn; typedef struct http_error { - nni_list_node node; - uint16_t code; - char *body; + nni_list_node node; + nng_http_status code; + char *body; } http_error; struct nng_http_server { @@ -327,7 +327,7 @@ http_sconn_txdone(void *arg) } static void -http_sconn_error(http_sconn *sc, uint16_t err) +http_sconn_error(http_sconn *sc, nng_http_status err) { nng_http_set_status(sc->conn, err, NULL); if (nni_http_server_error(sc->server, sc->conn) != 0) { @@ -650,9 +650,9 @@ http_sconn_cbdone(void *arg) return; } if (!nni_http_res_sent(sc->conn)) { - const char *val; - const char *method; - uint16_t status; + const char *val; + const char *method; + nng_http_status status; val = nni_http_get_header(sc->conn, "Connection"); status = nni_http_get_status(sc->conn); method = nni_http_get_method(sc->conn); @@ -947,7 +947,7 @@ nni_http_server_close(nni_http_server *s) } static int -http_server_set_err(nni_http_server *s, uint16_t code, char *body) +http_server_set_err(nni_http_server *s, nng_http_status code, char *body) { http_error *epage; @@ -973,7 +973,7 @@ http_server_set_err(nni_http_server *s, uint16_t code, char *body) int nni_http_server_set_error_page( - nni_http_server *s, uint16_t code, const char *html) + nni_http_server *s, nng_http_status code, const char *html) { char *body; int rv; @@ -991,10 +991,10 @@ nni_http_server_set_error_page( int nni_http_server_error(nni_http_server *s, nng_http *conn) { - http_error *epage; - char *body = NULL; - uint16_t code = nni_http_get_status(conn); - int rv; + http_error *epage; + char *body = NULL; + nng_http_status code = nni_http_get_status(conn); + int rv; nni_mtx_lock(&s->errors_mtx); NNI_LIST_FOREACH (&s->errors, epage) { @@ -1168,7 +1168,7 @@ http_handle_file(nng_http *conn, void *arg, nni_aio *aio) // them up chunkwise. Applications could even come up with their own // caching version of the http handler. if ((rv = nni_file_get(hf->path, &data, &size)) != 0) { - uint16_t status; + nng_http_status status; switch (rv) { case NNG_ENOMEM: status = NNG_HTTP_STATUS_INTERNAL_SERVER_ERROR; @@ -1350,7 +1350,7 @@ http_handle_dir(nng_http *conn, void *arg, nng_aio *aio) nni_free(pn, pnsz); if (rv != 0) { - uint16_t status; + nng_http_status status; switch (rv) { case NNG_ENOMEM: @@ -1418,9 +1418,9 @@ nni_http_handler_init_directory( } typedef struct http_redirect { - uint16_t code; - char *where; - char *from; + nng_http_status code; + char *where; + char *from; } http_redirect; static void @@ -1483,7 +1483,7 @@ http_redirect_free(void *arg) int nni_http_handler_init_redirect(nni_http_handler **hpp, const char *uri, - uint16_t status, const char *where) + nng_http_status status, const char *where) { nni_http_handler *h; int rv; -- cgit v1.2.3-70-g09d2