<div dir="ltr"><div dir="ltr">Hello,<div>I'm sorry, I triggered this issue while developing the dynamic configuration change module. When I directly modify the configuration content in memory through the API interface, it may set all the servers to the backup state, which will cause rrp->peers to be NULL. However, during the process of starting nginx with local configuration, this situation will not occur because the configuration check will inform "no server in upstream", so this is not a problem. Thank you for your response.<br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> 于2022年12月20日周二 16:48写道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello!<br>
<br>
On Tue, Dec 20, 2022 at 04:16:37PM +0800, 乔志奇 wrote:<br>
<br>
> # HG changeset patch<br>
> # User 乔志奇@Matebook-Qiao <<a href="mailto:qiaozhiqi2016@gmail.com" target="_blank">qiaozhiqi2016@gmail.com</a>><br>
> # Date 1671521412 -28800<br>
> #      Tue Dec 20 15:30:12 2022 +0800<br>
> # Branch nginx-bugfix-crash<br>
> # Node ID 992013158c8970318c20e2e3294dbc9311bb20c8<br>
> # Parent  3108d4d668e4b907868b815f0441d4c893bf4188<br>
> Fixed crash protection in round robin<br>
> <br>
> When all servers in the upstream are in the down state, rrp->peers will be<br>
> NULL, initialization will crash here, and protection is needed.<br>
> <br>
> diff -r 3108d4d668e4 -r 992013158c89<br>
> src/http/ngx_http_upstream_round_robin.c<br>
> --- a/src/http/ngx_http_upstream_round_robin.c  Fri Dec 16 01:15:15 2022<br>
> +0400<br>
> +++ b/src/http/ngx_http_upstream_round_robin.c  Tue Dec 20 15:30:12 2022<br>
> +0800<br>
> @@ -275,6 +275,10 @@<br>
>      rrp->current = NULL;<br>
>      rrp->config = 0;<br>
> <br>
> +    if (rrp->peers == NULL) {<br>
> +        return NGX_ERROR;<br>
> +    }<br>
> +<br>
>      n = rrp->peers->number;<br>
> <br>
>      if (rrp->peers->next && rrp->peers->next->number > n) {<br>
<br>
Could you please clarify how rrp->peers can be NULL here?  An <br>
example configuration and/or test which demonstrates the problem <br>
would be awesome.  Thanks in advance.<br>
<br>
-- <br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" rel="noreferrer" target="_blank">http://mdounin.ru/</a><br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org" target="_blank">nginx-devel@nginx.org</a><br>
<a href="https://mailman.nginx.org/mailman/listinfo/nginx-devel" rel="noreferrer" target="_blank">https://mailman.nginx.org/mailman/listinfo/nginx-devel</a><br>
</blockquote></div>