[PATCH] Random peer selection for implicit upstream defined by proxy_pass

Maxim Dounin mdounin at mdounin.ru
Fri Sep 28 18:51:34 UTC 2012


Hello!

On Wed, Sep 19, 2012 at 10:39:01PM -0700, Anton Jouline wrote:

[...]

> So, i decided instead to take a look at ngx_resolver code and
> it turned out that it's actually very simple to randomize there,
> since there is code already that copies the array from one place
> in memory to another. Looked like that was ideal place for
> changing the order via simple rotation.
> Here is the new patch:
> 
> 
> 
> --- a/src/core/ngx_resolver.c
> +++ b/src/core/ngx_resolver.c
> @@ -88,6 +88,8 @@ static void *ngx_resolver_calloc(ngx_resolver_t *r,
> size_t size);
>  static void ngx_resolver_free(ngx_resolver_t *r, void *p);
>  static void ngx_resolver_free_locked(ngx_resolver_t *r, void *p);
>  static void *ngx_resolver_dup(ngx_resolver_t *r, void *src, size_t size);
> +static in_addr_t *ngx_resolver_dup_rotated(ngx_resolver_t *r, in_addr_t *src,
> +    u_short n);
>  static u_char *ngx_resolver_log_error(ngx_log_t *log, u_char *buf, size_t len);

[...]

Slightly modified version committed, thanks:

http://trac.nginx.org/nginx/changeset/4872/nginx

I'm a bit unsure - would you prefer Russian attribution in 
CHANGES.ru?  (We usually write names in Russian in CHANGES.ru if 
contributor is from exUSSR/speak Russian.)

Maxim Dounin



More information about the nginx-devel mailing list