You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/06/07 00:52:21 UTC

[jira] [Commented] (TS-3245) getopt doesn't work correctly when used in plugin chaining

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

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

GitHub user pbchou opened a pull request:

    https://github.com/apache/trafficserver/pull/696

    TS-3245: Made changes based on input from James Peach to allow

             multiple global plugins to co-exist in the plugin.config file.
             Also, made the same changes to allow remap plugins to co-exist
             with each other in the remap.config file.
    
             Specifically, on freebsd and darwin platforms we use
             'optreset = 1' to reset the getopt_long() command line parser.
             On Linux/glibc we use 'optind = 0' to reset the parser.
             The parser must be reset between uses such as first loading
             one plugin and then another.
    
             The setting of these variables is now performed in ATS core
             before the plugin initialization functions are called. The
             setting of these variables inside of the individual plugins
             has been removed. If a plugin needs to call getopt_long()
             outside of the plugin global or remap intializations,
             it should use the code in proxy/Plugin.cc as an example.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/pbchou/trafficserver TS-3245-B

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafficserver/pull/696.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #696
    
----
commit 114618ef3fb27280eb248dd2524bd0523df10507
Author: Peter Chou <pb...@labs.att.com>
Date:   2016-06-06T23:31:43Z

    TS-3245: Made changes based on input from James Peach to allow
             multiple global plugins to co-exist in the plugin.config file.
             Also, made the same changes to allow remap plugins to co-exist
             with each other in the remap.config file.
    
             Specifically, on freebsd and darwin platforms we use
             'optreset = 1' to reset the getopt_long() command line parser.
             On Linux/glibc we use 'optind = 0' to reset the parser.
             The parser must be reset between uses such as first loading
             one plugin and then another.
    
             The setting of these variables is now performed in ATS core
             before the plugin initialization functions are called. The
             setting of these variables inside of the individual plugins
             has been removed. If a plugin needs to call getopt_long()
             outside of the plugin global or remap intializations,
             it should use the code in proxy/Plugin.cc as an example.

----


> getopt doesn't work correctly when used in plugin chaining
> ----------------------------------------------------------
>
>                 Key: TS-3245
>                 URL: https://issues.apache.org/jira/browse/TS-3245
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Plugins
>    Affects Versions: 5.1.1
>            Reporter: Sudheer Vinukonda
>            Priority: Minor
>              Labels: newbie
>             Fix For: sometime
>
>
> When multiple plugins that use getopt are chained, it doesn't work correctly for the subsequent plugins after the first plugin. [~jpeach@apache.org] and [~zwoop] suggested that the getopt globals need to be reset (example, {{optind = opterr = optopt = 0}}) before using it and would be better to do it in the core during plugin loading to keep it simple/transparent from plugin development. 
> Note that, if a plugin itself uses getopt multiple times on different argv's, it would have to reset the globals between them. 



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