If LOCALSTATEDIR is inaccessible, store the pid and socket files in the configuration directory.
The compile time local state directory is usually /var or /usr/local/var. If this is not accessible for some reason, for example because someone ./configured tinc without --localstatedir and /usr/local/var does not exist, or if tinc is started by a non-root user, then tinc will fall back to the directory where tinc.conf is stored. A warning is logged when this happens.
This commit is contained in:
		
							parent
							
								
									dece2db78e
								
							
						
					
					
						commit
						60fbdb3f2c
					
				
					 1 changed files with 15 additions and 5 deletions
				
			
		
							
								
								
									
										20
									
								
								src/names.c
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								src/names.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
/*
 | 
			
		||||
    names.c -- generate commonly used (file)names
 | 
			
		||||
    Copyright (C) 1998-2005 Ivo Timmermans
 | 
			
		||||
                  2000-2013 Guus Sliepen <guus@tinc-vpn.org>
 | 
			
		||||
                  2000-2015 Guus Sliepen <guus@tinc-vpn.org>
 | 
			
		||||
 | 
			
		||||
    This program is free software; you can redistribute it and/or modify
 | 
			
		||||
    it under the terms of the GNU General Public License as published by
 | 
			
		||||
| 
						 | 
				
			
			@ -85,11 +85,21 @@ void make_names(void) {
 | 
			
		|||
	if(!pidfilename)
 | 
			
		||||
		xasprintf(&pidfilename, "%s" SLASH "pid", confbase);
 | 
			
		||||
#else
 | 
			
		||||
	if(!logfilename)
 | 
			
		||||
		xasprintf(&logfilename, LOCALSTATEDIR SLASH "log" SLASH "%s.log", identname);
 | 
			
		||||
	if(!access(LOCALSTATEDIR, R_OK | W_OK | X_OK)) {
 | 
			
		||||
		if(!logfilename)
 | 
			
		||||
			xasprintf(&logfilename, LOCALSTATEDIR SLASH "log" SLASH "%s.log", identname);
 | 
			
		||||
 | 
			
		||||
	if(!pidfilename)
 | 
			
		||||
		xasprintf(&pidfilename, LOCALSTATEDIR SLASH "run" SLASH "%s.pid", identname);
 | 
			
		||||
		if(!pidfilename)
 | 
			
		||||
			xasprintf(&pidfilename, LOCALSTATEDIR SLASH "run" SLASH "%s.pid", identname);
 | 
			
		||||
	} else {
 | 
			
		||||
		if(!logfilename)
 | 
			
		||||
			xasprintf(&logfilename, "%s" SLASH "log", confbase);
 | 
			
		||||
 | 
			
		||||
		if(!pidfilename) {
 | 
			
		||||
			logger(DEBUG_ALWAYS, LOG_WARNING, "Could not access " LOCALSTATEDIR SLASH " (%s), storing pid and socket files in %s" SLASH, strerror(errno), confbase);
 | 
			
		||||
			xasprintf(&pidfilename, "%s" SLASH "pid", confbase);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if(!unixsocketname) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue