Fix the "network" command in tinc shell.
This commit is contained in:
		
							parent
							
								
									b6b302cee9
								
							
						
					
					
						commit
						51a0dc5145
					
				
					 2 changed files with 22 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -137,4 +137,12 @@ void free_names(void) {
 | 
			
		|||
	free(logfilename);
 | 
			
		||||
	free(confbase);
 | 
			
		||||
	free(confdir);
 | 
			
		||||
 | 
			
		||||
	identname = NULL;
 | 
			
		||||
	netname = NULL;
 | 
			
		||||
	unixsocketname = NULL;
 | 
			
		||||
	pidfilename = NULL;
 | 
			
		||||
	logfilename = NULL;
 | 
			
		||||
	confbase = NULL;
 | 
			
		||||
	confdir = NULL;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2284,26 +2284,29 @@ static int cmd_exchange_all(int argc, char *argv[]) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static int switch_network(char *name) {
 | 
			
		||||
	if(strcmp(name, ".")) {
 | 
			
		||||
		if(!check_netname(name, false)) {
 | 
			
		||||
			fprintf(stderr, "Invalid character in netname!\n");
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(!check_netname(name, true))
 | 
			
		||||
			fprintf(stderr, "Warning: unsafe character in netname!\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(fd >= 0) {
 | 
			
		||||
		close(fd);
 | 
			
		||||
		fd = -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	free(confbase);
 | 
			
		||||
	confbase = NULL;
 | 
			
		||||
	free(pidfilename);
 | 
			
		||||
	pidfilename = NULL;
 | 
			
		||||
	free(logfilename);
 | 
			
		||||
	logfilename = NULL;
 | 
			
		||||
	free(unixsocketname);
 | 
			
		||||
	unixsocketname = NULL;
 | 
			
		||||
	free_names();
 | 
			
		||||
	netname = strcmp(name, ".") ? xstrdup(name) : NULL;
 | 
			
		||||
	make_names(false);
 | 
			
		||||
 | 
			
		||||
	free(tinc_conf);
 | 
			
		||||
	free(hosts_dir);
 | 
			
		||||
	free(prompt);
 | 
			
		||||
 | 
			
		||||
	free(netname);
 | 
			
		||||
	netname = strcmp(name, ".") ? xstrdup(name) : NULL;
 | 
			
		||||
 | 
			
		||||
        xasprintf(&tinc_conf, "%s" SLASH "tinc.conf", confbase);
 | 
			
		||||
        xasprintf(&hosts_dir, "%s" SLASH "hosts", confbase);
 | 
			
		||||
	xasprintf(&prompt, "%s> ", identname);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue