mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	add listen= parameter to tcp protocol modules
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@569 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
		
							parent
							
								
									8df72bceb5
								
							
						
					
					
						commit
						ecd346fa9a
					
				
					 3 changed files with 27 additions and 2 deletions
				
			
		| 
						 | 
					@ -52,7 +52,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef USE_TCP_SOCKETS
 | 
					#ifdef USE_TCP_SOCKETS
 | 
				
			||||||
#define SOCKET_DESCRIPTION "(TCP sockets)"
 | 
					#define SOCKET_DESCRIPTION "(TCP sockets)"
 | 
				
			||||||
#define SOCKET_USAGE "port=<TCP port number> loopback=<listen on loopback device only?>"
 | 
					#define SOCKET_USAGE "port=<TCP port number> loopback=<listen on loopback device only?> listen=<address to listen on>"
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
#define SOCKET_DESCRIPTION "(UNIX sockets)"
 | 
					#define SOCKET_DESCRIPTION "(UNIX sockets)"
 | 
				
			||||||
#define SOCKET_USAGE "socket=<path to UNIX socket>"
 | 
					#define SOCKET_USAGE "socket=<path to UNIX socket>"
 | 
				
			||||||
| 
						 | 
					@ -146,6 +146,7 @@ static const char* const valid_modargs[] = {
 | 
				
			||||||
#if defined(USE_TCP_SOCKETS)
 | 
					#if defined(USE_TCP_SOCKETS)
 | 
				
			||||||
    "port",
 | 
					    "port",
 | 
				
			||||||
    "loopback",
 | 
					    "loopback",
 | 
				
			||||||
 | 
					    "listen",
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    "socket",
 | 
					    "socket",
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -157,6 +158,7 @@ static pa_socket_server *create_socket_server(pa_core *c, pa_modargs *ma) {
 | 
				
			||||||
#if defined(USE_TCP_SOCKETS)
 | 
					#if defined(USE_TCP_SOCKETS)
 | 
				
			||||||
    int loopback = 1;
 | 
					    int loopback = 1;
 | 
				
			||||||
    uint32_t port = IPV4_PORT;
 | 
					    uint32_t port = IPV4_PORT;
 | 
				
			||||||
 | 
					    const char *listen_on;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pa_modargs_get_value_boolean(ma, "loopback", &loopback) < 0) {
 | 
					    if (pa_modargs_get_value_boolean(ma, "loopback", &loopback) < 0) {
 | 
				
			||||||
        pa_log(__FILE__": loopback= expects a boolean argument.\n");
 | 
					        pa_log(__FILE__": loopback= expects a boolean argument.\n");
 | 
				
			||||||
| 
						 | 
					@ -168,8 +170,12 @@ static pa_socket_server *create_socket_server(pa_core *c, pa_modargs *ma) {
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    listen_on = pa_modargs_get_value(ma, "listen", NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (loopback) {
 | 
					    if (listen_on) {
 | 
				
			||||||
 | 
					        if (!(s = pa_socket_server_new_ip_string(c->mainloop, listen_on, port, TCPWRAP_SERVICE)))
 | 
				
			||||||
 | 
					            return NULL;
 | 
				
			||||||
 | 
					    } else if (loopback) {
 | 
				
			||||||
        if (!(s = pa_socket_server_new_ip_loopback(c->mainloop, port, TCPWRAP_SERVICE)))
 | 
					        if (!(s = pa_socket_server_new_ip_loopback(c->mainloop, port, TCPWRAP_SERVICE)))
 | 
				
			||||||
            return NULL;
 | 
					            return NULL;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -334,6 +334,24 @@ pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port,
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pa_socket_server* pa_socket_server_new_ip_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service) {
 | 
				
			||||||
 | 
					    uint8_t ipv6[16];
 | 
				
			||||||
 | 
					    uint32_t ipv4;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    assert(m);
 | 
				
			||||||
 | 
					    assert(name);
 | 
				
			||||||
 | 
					    assert(port > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (inet_pton(AF_INET6, name, ipv6) > 0)
 | 
				
			||||||
 | 
					        return pa_socket_server_new_ipv6(m, ipv6, port, tcpwrap_service);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (inet_pton(AF_INET, name, &ipv4) > 0)
 | 
				
			||||||
 | 
					        return pa_socket_server_new_ipv4(m, ntohl(ipv4), port, tcpwrap_service);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pa_log_warn(__FILE__": failed to parse '%s'.\n", name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void socket_server_free(pa_socket_server*s) {
 | 
					static void socket_server_free(pa_socket_server*s) {
 | 
				
			||||||
    assert(s);
 | 
					    assert(s);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,7 @@ pa_socket_server* pa_socket_server_new_ipv4(pa_mainloop_api *m, uint32_t address
 | 
				
			||||||
pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port, const char *tcpwrap_service);
 | 
					pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t address[16], uint16_t port, const char *tcpwrap_service);
 | 
				
			||||||
pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
 | 
					pa_socket_server* pa_socket_server_new_ip_loopback(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
 | 
				
			||||||
pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
 | 
					pa_socket_server* pa_socket_server_new_ip_any(pa_mainloop_api *m, uint16_t port, const char *tcpwrap_service);
 | 
				
			||||||
 | 
					pa_socket_server* pa_socket_server_new_ip_string(pa_mainloop_api *m, const char *name, uint16_t port, const char *tcpwrap_service);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void pa_socket_server_unref(pa_socket_server*s);
 | 
					void pa_socket_server_unref(pa_socket_server*s);
 | 
				
			||||||
pa_socket_server* pa_socket_server_ref(pa_socket_server *s);
 | 
					pa_socket_server* pa_socket_server_ref(pa_socket_server *s);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue