@@ -252,6 +252,7 @@ ngx_http_lua_upstream_get_primary_peers(lua_State * L)
252252 ngx_str_t host ;
253253 ngx_uint_t i ;
254254 ngx_http_upstream_rr_peers_t * peers ;
255+ ngx_http_upstream_rr_peer_t * peer ;
255256 ngx_http_upstream_srv_conf_t * us ;
256257
257258 if (lua_gettop (L ) != 1 ) {
@@ -277,9 +278,11 @@ ngx_http_lua_upstream_get_primary_peers(lua_State * L)
277278
278279 lua_createtable (L , peers -> number , 0 );
279280
280- for (i = 0 ; i < peers -> number ; i ++ ) {
281- ngx_http_lua_get_peer (L , & peers -> peer [i ], i );
281+ i = 0 ;
282+ for (peer = peers -> peer ; peer != NULL ; peer = peer -> next ) {
283+ ngx_http_lua_get_peer (L , peer , i );
282284 lua_rawseti (L , -2 , i + 1 );
285+ i ++ ;
283286 }
284287
285288 return 1 ;
@@ -292,6 +295,7 @@ ngx_http_lua_upstream_get_backup_peers(lua_State * L)
292295 ngx_str_t host ;
293296 ngx_uint_t i ;
294297 ngx_http_upstream_rr_peers_t * peers ;
298+ ngx_http_upstream_rr_peer_t * peer ;
295299 ngx_http_upstream_srv_conf_t * us ;
296300
297301 if (lua_gettop (L ) != 1 ) {
@@ -323,9 +327,11 @@ ngx_http_lua_upstream_get_backup_peers(lua_State * L)
323327
324328 lua_createtable (L , peers -> number , 0 );
325329
326- for (i = 0 ; i < peers -> number ; i ++ ) {
327- ngx_http_lua_get_peer (L , & peers -> peer [i ], i );
330+ i = 0 ;
331+ for (peer = peers -> peer ; peer != NULL ; peer = peer -> next ) {
332+ ngx_http_lua_get_peer (L , peer , i );
328333 lua_rawseti (L , -2 , i + 1 );
334+ i ++ ;
329335 }
330336
331337 return 1 ;
@@ -360,9 +366,10 @@ ngx_http_lua_upstream_set_peer_down(lua_State * L)
360366static ngx_http_upstream_rr_peer_t *
361367ngx_http_lua_upstream_lookup_peer (lua_State * L )
362368{
363- int id , backup ;
369+ int id , backup , i ;
364370 ngx_str_t host ;
365371 ngx_http_upstream_srv_conf_t * us ;
372+ ngx_http_upstream_rr_peer_t * peer ;
366373 ngx_http_upstream_rr_peers_t * peers ;
367374
368375 host .data = (u_char * ) luaL_checklstring (L , 1 , & host .len );
@@ -400,7 +407,12 @@ ngx_http_lua_upstream_lookup_peer(lua_State *L)
400407 return NULL ;
401408 }
402409
403- return & peers -> peer [id ];
410+ peer = peers -> peer ;
411+ for (i = 0 ; i < id ; i ++ ) {
412+ peer = peer -> next ;
413+ }
414+
415+ return peer ;
404416}
405417
406418
0 commit comments