Remove unused codes in ngx_http_upstream_connect

meng lynch lynch.meng at hotmail.com
Fri Apr 21 02:51:56 UTC 2023


Thanks

Another question, can I remove line 666 to 675 in ngx_http_upstream_init_request? Because the state will be created in ngx_http_upstream_connect.

546 static void
 547 ngx_http_upstream_init_request(ngx_http_request_t *r)
 548 {
 549     ngx_str_t                      *host;
 550     ngx_uint_t                      i;
 551     ngx_resolver_ctx_t             *ctx, temp;
 552     ngx_http_cleanup_t             *cln;
 553     ngx_http_upstream_t            *u;
 554     ngx_http_core_loc_conf_t       *clcf;
 555     ngx_http_upstream_srv_conf_t   *uscf, **uscfp;
 556     ngx_http_upstream_main_conf_t  *umcf;

657     if (r->upstream_states == NULL) {
 658
 659         r->upstream_states = ngx_array_create(r->pool, 1,
 660                                             sizeof(ngx_http_upstream_state_t));
 661         if (r->upstream_states == NULL) {
 662             ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
 663             return;
 664         }
 665
- 666     } else {
- 667
- 668         u->state = ngx_array_push(r->upstream_states);
- 669         if (u->state == NULL) {
- 670             ngx_http_upstream_finalize_request(r, u,
- 671                                                NGX_HTTP_INTERNAL_SERVER_ERROR);
- 672             return;
- 673         }
 -674
 -675         ngx_memzero(u->state, sizeof(ngx_http_upstream_state_t));
 676     }


On 2023/4/20, 10:58 PM, "nginx-devel on behalf of Maxim Dounin" <nginx-devel-bounces at nginx.org <mailto:nginx-devel-bounces at nginx.org> on behalf of mdounin at mdounin.ru <mailto:mdounin at mdounin.ru>> wrote:


Hello!


On Thu, Apr 20, 2023 at 02:24:53PM +0000, meng lynch wrote:


> Hello guys,
>
> Should the code from line 1517 to 1519 be removed? Because u->state is reallocated in line 1521.
>
> 1509 static void
> 1510 ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u)
> 1511 {
> 1512 ngx_int_t rc;
> 1513 ngx_connection_t *c;
> 1514
> 1515 r->connection->log->action = "connecting to upstream";
> 1516
> - 1517 if (u->state && u->state->response_time == (ngx_msec_t) -1) {
> - 1518 u->state->response_time = ngx_current_msec - u->start_time;
> - 1519 }
> 1520
> 1521 u->state = ngx_array_push(r->upstream_states);
> 1522 if (u->state == NULL) {
> 1523 ngx_http_upstream_finalize_request(r, u,
> 1524 NGX_HTTP_INTERNAL_SERVER_ERROR);
> 1525 return;
> 1526 }
>


In line 1521, the new state is allocated - the one which will be
used for the connection started with this
ngx_http_upstream_connect() call.


The code in lines 1517..1519 finalizes the previous state, the one
created by the previous connection (if any).


So no, this code shouldn't be removed, it is actually used.


--
Maxim Dounin
http://mdounin.ru/ <http://mdounin.ru/>
_______________________________________________
nginx-devel mailing list
nginx-devel at nginx.org <mailto:nginx-devel at nginx.org>
https://mailman.nginx.org/mailman/listinfo/nginx-devel <https://mailman.nginx.org/mailman/listinfo/nginx-devel>





More information about the nginx-devel mailing list