| 
					
				 | 
			
			
				@@ -81,6 +81,7 @@ struct Setup { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     connect_config: ConnectConfig, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     credentials: Option<Credentials>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     enable_discovery: bool, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    zeroconf_port: u16, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn setup(args: &[String]) -> Setup { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -99,7 +100,8 @@ fn setup(args: &[String]) -> Setup { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         .optopt("", "backend", "Audio backend to use. Use '?' to list options", "BACKEND") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         .optopt("", "device", "Audio device to use. Use '?' to list options", "DEVICE") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         .optopt("", "mixer", "Mixer to use", "MIXER") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .optopt("", "initial-volume", "Initial volume in %, once connected (must be from 0 to 100)", "VOLUME"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .optopt("", "initial-volume", "Initial volume in %, once connected (must be from 0 to 100)", "VOLUME") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .optopt("z", "zeroconf-port", "The port the internal server advertised over zeroconf uses.", "ZEROCONF_PORT"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let matches = match opts.parse(&args[1..]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Ok(m) => m, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,6 +162,17 @@ fn setup(args: &[String]) -> Setup { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     debug!("Volume \"{}\" !", initial_volume); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let zeroconf_port: u16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if matches.opt_present("zeroconf-port") && matches.opt_str("zeroconf-port").unwrap().parse::<u16>().is_ok() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let z = matches.opt_str("zeroconf-port").unwrap().parse::<u16>().unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        match z { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            z if z >= 1024 => { zeroconf_port = z } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _ => { zeroconf_port = 0 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        zeroconf_port = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let name = matches.opt_str("name").unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let use_audio_cache = !matches.opt_present("disable-audio-cache"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -221,6 +234,7 @@ fn setup(args: &[String]) -> Setup { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         credentials: credentials, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         device: device, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         enable_discovery: enable_discovery, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        zeroconf_port: zeroconf_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mixer: mixer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -269,7 +283,7 @@ impl Main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let config = task.connect_config.clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let device_id = task.session_config.device_id.clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            task.discovery = Some(discovery(&handle, config, device_id).unwrap()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            task.discovery = Some(discovery(&handle, config, device_id, setup.zeroconf_port).unwrap()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if let Some(credentials) = setup.credentials { 
			 |