diff --git a/src/httpd.c b/src/httpd.c index fc84fb15..397ccb72 100644 --- a/src/httpd.c +++ b/src/httpd.c @@ -1006,11 +1006,7 @@ httpd_request_parse(struct evhttp_request *req, struct httpd_uri_parsed *uri_par evcon = evhttp_request_get_connection(req); if (evcon) -#ifdef HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR - evhttp_connection_get_peer(evcon, &hreq->peer_address, &hreq->peer_port); -#else - evhttp_connection_get_peer(evcon, (char **)&hreq->peer_address, &hreq->peer_port); -#endif + httpd_peer_get(&hreq->peer_address, &hreq->peer_port, evcon); else DPRINTF(E_LOG, L_HTTPD, "Connection to client lost or missing\n"); @@ -1500,7 +1496,7 @@ bool httpd_admin_check_auth(struct evhttp_request *req) { struct evhttp_connection *evcon; - char *addr; + const char *addr; uint16_t port; const char *passwd; int ret; @@ -1512,7 +1508,7 @@ httpd_admin_check_auth(struct evhttp_request *req) return false; } - evhttp_connection_get_peer(evcon, &addr, &port); + httpd_peer_get(&addr, &port, evcon); if (net_peer_address_is_trusted(addr)) return true; @@ -1641,6 +1637,16 @@ httpd_basic_auth(struct evhttp_request *req, const char *user, const char *passw return -1; } +void +httpd_peer_get(const char **address, ev_uint16_t *port, struct evhttp_connection *evcon) +{ +#ifdef HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR + evhttp_connection_get_peer(evcon, address, port); +#else + evhttp_connection_get_peer(evcon, (char **)address, port); +#endif +} + /* Thread: main */ int httpd_init(const char *webroot) diff --git a/src/httpd.h b/src/httpd.h index 632c94cc..1dd6e825 100644 --- a/src/httpd.h +++ b/src/httpd.h @@ -161,6 +161,9 @@ httpd_admin_check_auth(struct evhttp_request *req); int httpd_basic_auth(struct evhttp_request *req, const char *user, const char *passwd, const char *realm); +void +httpd_peer_get(const char **address, ev_uint16_t *port, struct evhttp_connection *evcon); + int httpd_init(const char *webroot); diff --git a/src/httpd_streaming.c b/src/httpd_streaming.c index a4b5b1a9..b078b925 100644 --- a/src/httpd_streaming.c +++ b/src/httpd_streaming.c @@ -106,12 +106,12 @@ streaming_close_cb(struct evhttp_connection *evcon, void *arg) struct streaming_session *this; struct streaming_session *session; struct streaming_session *prev; - char *address; + const char *address; ev_uint16_t port; this = (struct streaming_session *)arg; - evhttp_connection_get_peer(evcon, &address, &port); + httpd_peer_get(&address, &port, evcon); DPRINTF(E_INFO, L_STREAMING, "Stopping mp3 streaming to %s:%d\n", address, (int)port); pthread_mutex_lock(&streaming_sessions_lck); @@ -168,7 +168,7 @@ streaming_end(void) { struct streaming_session *session; struct evhttp_connection *evcon; - char *address; + const char *address; ev_uint16_t port; pthread_mutex_lock(&streaming_sessions_lck); @@ -178,7 +178,7 @@ streaming_end(void) if (evcon) { evhttp_connection_set_closecb(evcon, NULL, NULL); - evhttp_connection_get_peer(evcon, &address, &port); + httpd_peer_get(&address, &port, evcon); DPRINTF(E_INFO, L_STREAMING, "Force close stream to %s:%d\n", address, (int)port); } evhttp_send_reply_end(session->req); @@ -531,7 +531,7 @@ streaming_request(struct evhttp_request *req, struct httpd_uri_parsed *uri_parse struct evkeyvalq *output_headers; cfg_t *lib; const char *name; - char *address; + const char *address; ev_uint16_t port; const char *param; bool require_icy = false; @@ -546,7 +546,7 @@ streaming_request(struct evhttp_request *req, struct httpd_uri_parsed *uri_parse } evcon = evhttp_request_get_connection(req); - evhttp_connection_get_peer(evcon, &address, &port); + httpd_peer_get(&address, &port, evcon); param = evhttp_find_header( evhttp_request_get_input_headers(req), "Icy-MetaData"); if (param && strcmp(param, "1") == 0) require_icy = true;