From: Mike Brady Date: Mon, 6 Nov 2017 09:05:22 +0000 (+0000) Subject: Clean up rtp_send_client_command a little X-Git-Tag: 3.2d13~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=827fa5a5b094afa8291efa7d7a9c64d1cd63f107;p=thirdparty%2Fshairport-sync.git Clean up rtp_send_client_command a little --- diff --git a/dbus/src/dbus_service.c b/dbus/src/dbus_service.c index 457f3d82..b6a53763 100644 --- a/dbus/src/dbus_service.c +++ b/dbus/src/dbus_service.c @@ -1,4 +1,5 @@ #include +#include #include "../../config.h" @@ -49,10 +50,34 @@ gboolean notify_volume_callback(ShairportSync *skeleton, gpointer user_data) { static gboolean on_handle_remote_command(ShairportSync *skeleton, GDBusMethodInvocation *invocation, const gchar *command, gpointer user_data) { debug(1,"RemoteCommand with command \"%s\".",command); - if (playing_conn) - rtp_send_client_command(playing_conn,command); - else + if (playing_conn) { + char server_reply[2000]; + ssize_t reply_size = rtp_send_client_command(playing_conn,command,server_reply,sizeof(server_reply)); + if (reply_size>=0) { + // not interested in the response. + // if (strstr(server_reply, "HTTP/1.1 204") == server_reply) { + // debug(1,"Client response is No Content"); + // } else if (strstr(server_reply, "HTTP/1.1 200 OK") != server_reply) { + // debug("Client response is OK, with content"); + // } else { + + if (strstr(server_reply, "HTTP/1.1 204") != server_reply) { + debug(1, "Client request to server responded with %d characters starting with this response:", strlen(server_reply)); + int i; + for (i=0;irtp_running) { if (conn->dacp_port == 0) { - debug(1, "Can't request a client pause: no valid active remote."); + debug(1, "Can't send a remote request: no valid active remote."); } else { struct addrinfo hints, *res; @@ -809,7 +810,10 @@ void rtp_send_client_command(rtsp_conn_info *conn, const char *command) { char message[20000], server_reply[2000], portstring[10], server[256]; memset(&message, 0, sizeof(message)); - memset(&server_reply, 0, sizeof(server_reply)); + if ((response) && (max_response_length)) + memset(response, 0, max_response_length); + else + memset(&server_reply, 0, sizeof(server_reply)); memset(&portstring, 0, sizeof(portstring)); if (conn->connection_ip_family == AF_INET6) { @@ -853,23 +857,13 @@ void rtp_send_client_command(rtsp_conn_info *conn, const char *command) { } // Receive a reply from the server - ssize_t reply_size = recv(sockfd, server_reply, 2000, 0); + if ((response) && (max_response_length)) + reply_size = recv(sockfd, response, max_response_length, 0); + else + reply_size = recv(sockfd, server_reply, sizeof(server_reply), 0); if (reply_size < 0) { debug(1, "recv failed"); } - - if (strstr(server_reply, "HTTP/1.1 204 No Content") != server_reply) { - debug(1, "Client request to server failed with %d characters starting with this response:", reply_size,server_reply); - int i; - - for (i=0;i