Browse Source

obs-outputs: Add log message on successful connection

James Hurley 2 years ago
parent
commit
cca1cbf11b

+ 1 - 0
plugins/obs-outputs/librtmp/rtmp.c

@@ -1115,6 +1115,7 @@ RTMP_Connect(RTMP *r, RTMPPacket *cp)
         goto fail;
     }
 
+    happy_eyeballs_get_remote_addr(happy_ctx, &r->m_sb.sb_addr);
     r->connect_time_ms = (int)(happy_eyeballs_get_connection_time_ns(happy_ctx) / 1000000);
 
     /* Successful connection */

+ 1 - 0
plugins/obs-outputs/librtmp/rtmp.h

@@ -265,6 +265,7 @@ extern "C"
 
     typedef struct RTMPSockBuf
     {
+        struct sockaddr_storage sb_addr; /* address of remote */
         SOCKET sb_socket;
         int sb_size;		/* number of unprocessed bytes in buffer */
         char *sb_start;		/* pointer into sb_pBuffer of next byte to process */

+ 15 - 0
plugins/obs-outputs/net-if.c

@@ -94,6 +94,21 @@ void netif_log_saddrs(struct netif_saddr_data *sd)
 		info("\t\t%s", sd->addrs.array[i].name);
 }
 
+bool netif_addr_to_str(struct sockaddr_storage *in, char *addr, int addr_len)
+{
+	if (!in || !addr)
+		return false;
+	if (in->ss_family != AF_INET6 && in->ss_family != AF_INET)
+		return false;
+	if ((in->ss_family == AF_INET6 && addr_len < INET6_ADDRSTRLEN) ||
+	    (in->ss_family == AF_INET && addr_len < INET_ADDRSTRLEN))
+		return false;
+
+	memset(addr, 0, addr_len);
+	netif_convert_to_string(addr, in);
+	return true;
+}
+
 bool netif_str_to_addr(struct sockaddr_storage *out, int *addr_len,
 		       const char *addr)
 {

+ 2 - 0
plugins/obs-outputs/net-if.h

@@ -73,5 +73,7 @@ static inline void netif_saddr_data_free(struct netif_saddr_data *data)
 
 extern bool netif_str_to_addr(struct sockaddr_storage *out, int *addr_len,
 			      const char *addr);
+extern bool netif_addr_to_str(struct sockaddr_storage *in, char *addr,
+			      int addr_len);
 extern void netif_get_addrs(struct netif_saddr_data *ifaddrs);
 extern void netif_log_saddrs(struct netif_saddr_data *sd);

+ 5 - 1
plugins/obs-outputs/rtmp-stream.c

@@ -1229,7 +1229,11 @@ static int try_connect(struct rtmp_stream *stream)
 	if (!RTMP_ConnectStream(&stream->rtmp, 0))
 		return OBS_OUTPUT_INVALID_STREAM;
 
-	info("Connection to %s successful", stream->path.array);
+	char ip_address[INET6_ADDRSTRLEN] = {0};
+	netif_addr_to_str(&stream->rtmp.m_sb.sb_addr, ip_address,
+			  INET6_ADDRSTRLEN);
+	info("Connection to %s (%s) successful", stream->path.array,
+	     ip_address);
 
 	return init_send(stream);
 }