[ 
https://issues.apache.org/jira/browse/TS-3960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15027326#comment-15027326
 ] 

ASF GitHub Bot commented on TS-3960:
------------------------------------

Github user jpeach commented on the pull request:

    https://github.com/apache/trafficserver/pull/301#issuecomment-159695223
  
    Ok the next thing we need to do is remove the ```cert_files_vec``` from all 
the functions in ```SSLUtils.cc```. The way we can do this is to add another 
callback to ```SSLConfigParams``` that is triggered when any SSL-related file 
is loaded. This callback can be attached in ```proxy/Main.cc``` and will just 
call your new ```ProcessManager::signalConfigFileChild()```.
    
    In ```FileManager::configFileChild()``` you need to hold the lock the whole 
time you are adding the new Rollback so that the parent pointer cannot get 
deleted out from under you. I think you should add an assertion that parent 
must not also have a parent in order to prevent construction of arbitrary 
Rollback trees.
    
    You don't need ```ts/ink_string++.h``` in ```mgmt/FileManager.h```.
    
    In ```FileManager::rereadConfig()```, you can't delete entries out of the 
hash table while you are iterating over it. The logic of this is pretty hard to 
follow and can be simplified. You don't need to track all the parents, just the 
changed files. For each changed file, you know it is a parent because 
```getParentRollback``` will return NULL. So you just have to walk the set of 
changed files, check if each is a parent, then delete the children if it is.
    
    I found the logic of which files trigger the change notification confusing 
because it is split between ```FileManager::fileChanged``` and 
```Rollback::internalUpdate```. You should clarify this either in comments or 
code.
    
    In places where you check ```isFileNameRooted()``` to determine whether the 
Rollback is a child, use an explicit member function:
    
            bool isChildRollback() const { return getParentRollback() != NULL; }
    
    I tested this and it writes backup copies of certificates:
    
            -rw-r--r--   1 root    nobody   2785 Nov 25 10:18 
ssl_multicert.config_2
            -rw-r--r--   1 root    nobody   2785 Nov 25 10:18 
ssl_multicert.config
            -rw-------   1 nobody  nobody  12859 Nov 25 10:20 records.config
            -rw-r--r--   1 root    nobody   3278 Nov 25 10:22 example.com.crt_1
            -rw-r--r--   1 root    nobody   3278 Nov 25 10:22 example.com.crt
    
    Do we really want this to happen for certificates? What about for private 
keys?. This is why I suggested sending flags with the management message so 
that the rollback can turn this off.
    
    It looks like this change only tracks certificate files. What about all the 
other files that contribute to the SSL context?


> traffic_line -x doesn't reload SSL certs content
> ------------------------------------------------
>
>                 Key: TS-3960
>                 URL: https://issues.apache.org/jira/browse/TS-3960
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: SSL
>            Reporter: Zhang Zizhong
>            Assignee: Brian Geffon
>             Fix For: 6.1.0
>
>
> traffic_line -x doesn't reload  when SSL certs change file contents without 
> changing the file names.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to