]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Add client IP metadata item -- the IP of the client, i.e. the sender of audio, is...
authorMike Brady <mikebrady@eircom.net>
Tue, 20 Sep 2016 14:17:28 +0000 (15:17 +0100)
committerMike Brady <mikebrady@eircom.net>
Tue, 20 Sep 2016 14:17:28 +0000 (15:17 +0100)
audio_alsa.c
rtsp.c

index ad5b0c741a7289045c6359db2224e2be81b2de00..0e9de51c5ba9383e74e52782759915f39341cff9 100644 (file)
@@ -386,6 +386,10 @@ int open_alsa_device(void) {
   // snd_pcm_uframes_t frames = 441 * 10;
   snd_pcm_uframes_t buffer_size, actual_buffer_length;
   snd_pcm_access_t access;
+  
+  // ensure no calls are made to the alsa device enquiring about the buffer length if synchronisation is disabled.
+  if (config.no_sync!=0)
+       audio_alsa.delay = NULL;
 
   ret = snd_pcm_open(&alsa_handle, alsa_out_dev, SND_PCM_STREAM_PLAYBACK, 0);
   if (ret < 0)
diff --git a/rtsp.c b/rtsp.c
index d2c71497d8ef47b463a59bab4ebe35015e110f11..feb11c27321ca7facc91ba6af0475fbc7e5130cf 100644 (file)
--- a/rtsp.c
+++ b/rtsp.c
@@ -967,6 +967,9 @@ static void handle_set_parameter_parameter(rtsp_conn_info *conn,
 //    string to identify the source's remote control on the network.
 //    'acre' -- this is the source's Active-Remote token, necessary if you want
 //    to send commands to the source's remote control (if it has one).
+//             `clip` -- the payload is the IP number of the client, i.e. the sender of audio.
+//             Can be an IPv4 or an IPv6 number.
+
 //
 // including a simple base64 encoder to minimise malloc/free activity
 
@@ -1950,6 +1953,10 @@ void rtsp_listen_loop(void) {
           sa = (struct sockaddr_in*)&conn->remote;
           inet_ntop(AF_INET, &(sa->sin_addr), remote_ip4, INET_ADDRSTRLEN);
           unsigned short int rport = ntohs(sa->sin_port);
+#ifdef CONFIG_METADATA
+               send_ssnc_metadata('clip', strdup(ip4), strlen(ip4) , 1);
+#endif
+
           debug(1,"New RTSP connection from %s:%u to self at %s:%u.",remote_ip4,rport,ip4,tport);
         }
 #ifdef AF_INET6
@@ -1965,7 +1972,9 @@ void rtsp_listen_loop(void) {
           sa6 = (struct sockaddr_in6*)&conn->remote;    // pretend this is loaded with something
           inet_ntop(AF_INET6, &(sa6->sin6_addr), remote_ip6, INET6_ADDRSTRLEN);
           u_int16_t rport = ntohs(sa6->sin6_port);
-
+#ifdef CONFIG_METADATA
+               send_ssnc_metadata('clip', strdup(ip6), strlen(ip6), 1);
+#endif
           debug(1,"New RTSP connection from [%s]:%u to self at [%s]:%u.",remote_ip6,rport,ip6,tport);
         }
  #endif