VpnService: Tweaks for ConfigUpdater to fix adding
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
		
							parent
							
								
									c3203ce90a
								
							
						
					
					
						commit
						b60536222d
					
				| @ -288,8 +288,9 @@ public class VpnService extends Service { | |||||||
|             this.oldConfig = oldConfig; |             this.oldConfig = oldConfig; | ||||||
|             this.shouldConnect = shouldConnect; |             this.shouldConnect = shouldConnect; | ||||||
|             newName = newConfig.getName(); |             newName = newConfig.getName(); | ||||||
|             oldName = oldConfig.getName(); |             // When adding a config, "old file" and "new file" are the same thing. | ||||||
|             if (isRename() && configurations.containsKey(newName)) |             oldName = oldConfig != null ? oldConfig.getName() : newName; | ||||||
|  |             if (isAddOrRename() && configurations.containsKey(newName)) | ||||||
|                 throw new IllegalStateException("Config " + newName + " already exists"); |                 throw new IllegalStateException("Config " + newName + " already exists"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -298,7 +299,7 @@ public class VpnService extends Service { | |||||||
|             Log.i(TAG, (oldConfig == null ? "Adding" : "Updating") + " config " + newName); |             Log.i(TAG, (oldConfig == null ? "Adding" : "Updating") + " config " + newName); | ||||||
|             final File newFile = new File(getFilesDir(), newName + ".conf"); |             final File newFile = new File(getFilesDir(), newName + ".conf"); | ||||||
|             final File oldFile = new File(getFilesDir(), oldName + ".conf"); |             final File oldFile = new File(getFilesDir(), oldName + ".conf"); | ||||||
|             if (isRename() && newFile.exists()) { |             if (isAddOrRename() && newFile.exists()) { | ||||||
|                 Log.w(TAG, "Refusing to overwrite existing config configuration"); |                 Log.w(TAG, "Refusing to overwrite existing config configuration"); | ||||||
|                 return false; |                 return false; | ||||||
|             } |             } | ||||||
| @ -317,8 +318,12 @@ public class VpnService extends Service { | |||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         private boolean isAddOrRename() { | ||||||
|  |             return oldConfig == null || !newName.equals(oldName); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         private boolean isRename() { |         private boolean isRename() { | ||||||
|             return oldConfig != null && !newConfig.getName().equals(oldConfig.getName()); |             return oldConfig != null && !newName.equals(oldName); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         @Override |         @Override | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user