Skip to content

Commit 57ad7a4

Browse files
committed
add http_status check when nginx startup
1 parent 1f93cf5 commit 57ad7a4

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/ngx_stream_upsync_module.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2702,6 +2702,11 @@ ngx_stream_upsync_consul_parse_init(void *data)
27022702

27032703
parsed = http_parser_execute(parser, &settings, buf, ngx_strlen(buf));
27042704
if (parsed != ngx_strlen(buf)) {
2705+
2706+
if (parser != NULL) {
2707+
ngx_free(parser);
2708+
parser = NULL;
2709+
}
27052710
ngx_log_error(NGX_LOG_ERR, ngx_cycle->log, 0,
27062711
"upsync_consul_parse_init: parsed body size is wrong");
27072712
return NGX_ERROR;
@@ -2752,6 +2757,11 @@ ngx_stream_upsync_etcd_parse_init(void *data)
27522757

27532758
parsed = http_parser_execute(parser, &settings, buf, ngx_strlen(buf));
27542759
if (parsed != ngx_strlen(buf)) {
2760+
2761+
if (parser != NULL) {
2762+
ngx_free(parser);
2763+
parser = NULL;
2764+
}
27552765
ngx_log_error(NGX_LOG_ERR, ngx_cycle->log, 0,
27562766
"upsync_etcd_parse_init: parsed body size is wrong");
27572767
return NGX_ERROR;
@@ -3387,7 +3397,6 @@ ngx_stream_upsync_get_upstream(ngx_cycle_t *cycle,
33873397
char *response = NULL;
33883398

33893399
ngx_stream_client_send(client, upsync_server);
3390-
33913400
if (ngx_stream_client_recv(client, &response, 0) <= 0) {
33923401
ngx_log_error(NGX_LOG_ERR, cycle->log, 0,
33933402
"upsync_get_upstream: http client recv fail");
@@ -3400,9 +3409,20 @@ ngx_stream_upsync_get_upstream(ngx_cycle_t *cycle,
34003409

34013410
return NGX_ERROR;
34023411
}
3403-
34043412
ngx_stream_client_destroy(client);
34053413

3414+
if (ngx_stream_http_parser_init() == NGX_ERROR) {
3415+
return NGX_ERROR;
3416+
}
3417+
http_parser_execute(parser, &settings, response, ngx_strlen(response));
3418+
if (parser != NULL) {
3419+
ngx_free(parser);
3420+
parser = NULL;
3421+
}
3422+
if (ngx_strncmp(state.status, "OK", 2) != 0) {
3423+
return NGX_ERROR;
3424+
}
3425+
34063426
*conf_value = response;
34073427

34083428
return NGX_OK;

0 commit comments

Comments
 (0)