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

Mark Thomas commented on DAEMON-458:
------------------------------------

Thanks for the report. I can repeat this issue. Procrun isn't taking into 
account any changes that may have been made to the service configuration 
outside of Procrun. I'll see if it is possible to do anything about that 
although part of me is thinking that the service should either be managed using 
procrun or externally to procrun and that a mix of both approaches is asking 
for trouble to some extent.
Note that the '++' and '--' variations of 'DependsOn' both work as expected.

> The changes in DAEMON-446 cause existing DependsOn values to be removed
> -----------------------------------------------------------------------
>
>                 Key: DAEMON-458
>                 URL: https://issues.apache.org/jira/browse/DAEMON-458
>             Project: Commons Daemon
>          Issue Type: Bug
>    Affects Versions: 1.3.2, 1.3.3
>            Reporter: Brian Andle
>            Priority: Major
>
> As part of DAEMON-446 a regression was introduced that causes existing 
> service DependsOn services to be removed when working with the //US option.
>  
> Replication:
> Run:
> {code:java}
> prunsrv.exe //IS/MyService --Startup=auto --Description=MyService 
> --DisplayName=MyService
> sc config MyService depend=Tcpip/Afd/Dhcp {code}
> View the services and note that *MyService* depends on Dhcp (the sc config 
> command is being used to represent a separate script call)
> Now run:
> {code:java}
> prunsrv.exe //US/MyService --Startup=manual {code}
> View the services and note that MyService no longer depends on Dhcp
> The offending code appears to be the following in service.c:
> {code:java}
>     /* Add the mandatory dependencies */
>     if (lpDependencies) {
>         lpDependencies = apxMultiSzCombine(NULL, lpDependencies,
>                                            L"Tcpip\0Afd\0", NULL);
>     } else {
>         lpDependencies = L"Tcpip\0Afd\0";
>     }{code}
> Which means if DependsOn isn't defined we'll always pass down Tcpip and Afd, 
> vs the NULL that happened before. Wiping existing custom dependancies out.
> I didn't test it but this code may not work properly with the – vs ++ logic 
> defined under [https://commons.apache.org/proper/commons-daemon/procrun.html] 
> The DAEMON-446 ticket talks about --DependsOn (full replace) although I only 
> see ++Depends on documented, so maybe DAEMON-446 was actually invalid to 
> begin with?
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to