tree b466d42af3378de207495c94721fd61e51899847
parent 1b0ad6ee72179fef479bfae7c8c4bfd5ac834c29
author Maxim Dounin <mdounin@mdounin.ru> 1329147348 +0000
committer Maxim Dounin <mdounin@mdounin.ru> 1329147348 +0000

Core: protection from cycles with named locations and post_action.

Now redirects to named locations are counted against normal uri changes
limit, and post_action respects this limit as well.  As a result at least
the following (bad) configurations no longer trigger infinite cycles:

1. Post action which recursively triggers post action:

    location / {
        post_action /index.html;
    }

2. Post action pointing to nonexistent named location:

    location / {
        post_action @nonexistent;
    }

3. Recursive error page for 500 (Internal Server Error) pointing to
   a nonexistent named location:

    location / {
        recursive_error_pages on;
        error_page 500 @nonexistent;
        return 500;
    }
