From af50e91232630cf7aad834c0535a10d5994193f4 Mon Sep 17 00:00:00 2001 From: Mike Brady Date: Sat, 2 Dec 2017 16:21:46 +0000 Subject: [PATCH] Intermediate --- mdns.c | 8 ++++---- mdns.h | 9 +++++---- mdns_avahi.c | 32 +++++++++++++++----------------- player.c | 5 +++-- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/mdns.c b/mdns.c index 2edbbf58..0651cdcf 100644 --- a/mdns.c +++ b/mdns.c @@ -104,9 +104,9 @@ void mdns_unregister(void) { } } -void mdns_dacp_monitor(char *dacp_id, uint16_t *port, void **private_pointer) { +void mdns_dacp_monitor(rtsp_conn_info *conn) { if ((config.mdns) && (config.mdns->mdns_dacp_monitor)) { - int error = config.mdns->mdns_dacp_monitor(dacp_id, port, private_pointer); + int error = config.mdns->mdns_dacp_monitor(conn); if (error) { debug(1, "Error starting a DACP monitor."); } @@ -114,9 +114,9 @@ void mdns_dacp_monitor(char *dacp_id, uint16_t *port, void **private_pointer) { debug(1, "Can't start a DACP monitor."); } -void mdns_dacp_dont_monitor(void **private_pointer) { +void mdns_dacp_dont_monitor(rtsp_conn_info *conn) { if ((config.mdns) && (config.mdns->mdns_dacp_dont_monitor)) { - config.mdns->mdns_dacp_dont_monitor(private_pointer); + config.mdns->mdns_dacp_dont_monitor(conn); } else debug(1, "Can't stop a DACP monitor."); } diff --git a/mdns.h b/mdns.h index 035eb786..a55eea98 100644 --- a/mdns.h +++ b/mdns.h @@ -3,13 +3,14 @@ #include "config.h" #include +#include extern int mdns_pid; void mdns_unregister(void); void mdns_register(void); -void mdns_dacp_monitor(char *dacp_id, uint16_t *port, void **private_pointer); -void mdns_dacp_dont_monitor(void **private_pointer); +void mdns_dacp_monitor(rtsp_conn_info *conn); +void mdns_dacp_dont_monitor(rtsp_conn_info *conn); void mdns_ls_backends(void); @@ -17,8 +18,8 @@ typedef struct { char *name; int (*mdns_register)(char *apname, int port); void (*mdns_unregister)(void); - int (*mdns_dacp_monitor)(char *dacp_id, uint16_t *port, void **private_pointer); - void (*mdns_dacp_dont_monitor)(void **private_pointer); + int (*mdns_dacp_monitor)(rtsp_conn_info *conn); + void (*mdns_dacp_dont_monitor)(rtsp_conn_info *conn); } mdns_backend; #ifdef CONFIG_METADATA diff --git a/mdns_avahi.c b/mdns_avahi.c index e632a860..cb99f462 100644 --- a/mdns_avahi.c +++ b/mdns_avahi.c @@ -377,9 +377,7 @@ static void avahi_unregister(void) { service_name = NULL; } -int avahi_dacp_monitor(char *dacp_id, uint16_t *port, void **private_pointer) { - - dacp_browser_struct **pdbs = (dacp_browser_struct **)private_pointer; +int avahi_dacp_monitor(rtsp_conn_info *conn) { dacp_browser_struct *dbs = (dacp_browser_struct *)malloc(sizeof(dacp_browser_struct)); @@ -435,24 +433,24 @@ int avahi_dacp_monitor(char *dacp_id, uint16_t *port, void **private_pointer) { } return -1; } - *pdbs = dbs; + conn->mdns_private_pointer = (void *)dbs; return 0; } -void avahi_dacp_dont_monitor(void **private_pointer) { - dacp_browser_struct **pdbs = (dacp_browser_struct **)private_pointer; - if (*pdbs) { +void avahi_dacp_dont_monitor(rtsp_conn_info *conn) { + dacp_browser_struct *dbs = (dacp_browser_struct *)conn->mdns_private_pointer; + if (dbs) { // stop and dispose of everything - if ((*pdbs)->service_poll) - avahi_threaded_poll_stop((*pdbs)->service_poll); - if ((*pdbs)->service_browser) - avahi_service_browser_free((*pdbs)->service_browser); - if ((*pdbs)->service_client) - avahi_client_free((*pdbs)->service_client); - if ((*pdbs)->service_poll) - avahi_threaded_poll_free((*pdbs)->service_poll); - free((char *)(*pdbs)); - *pdbs = NULL; + if ((dbs)->service_poll) + avahi_threaded_poll_stop((dbs)->service_poll); + if ((dbs)->service_browser) + avahi_service_browser_free((dbs)->service_browser); + if ((dbs)->service_client) + avahi_client_free((dbs)->service_client); + if ((dbs)->service_poll) + avahi_threaded_poll_free((dbs)->service_poll); + free((char *)(dbs)); + conn->mdns_private_pointer = NULL; } else { debug(1, "DHCP Monitor is not running."); } diff --git a/player.c b/player.c index 813ac301..5ec8ce9a 100644 --- a/player.c +++ b/player.c @@ -1579,7 +1579,8 @@ static void *player_thread_func(void *arg) { // start an mdns/zeroconf thread to look for DACP messages containing our DACP_ID and getting the // port number - mdns_dacp_monitor(conn->dacp_id, &conn->dacp_port, &conn->dacp_private); + //mdns_dacp_monitor(conn->dacp_id, &conn->dacp_port, &conn->dacp_private); + mdns_dacp_monitor(conn); conn->framesProcessedInThisEpoch = 0; conn->framesGeneratedInThisEpoch = 0; @@ -2186,7 +2187,7 @@ static void *player_thread_func(void *arg) { } // stop watching for DACP port number stuff - mdns_dacp_dont_monitor(&conn->dacp_private); // begin looking out for information about the client + mdns_dacp_dont_monitor(conn); // begin looking out for information about the client // as a remote control. Specifically we might need // the port number