@@ -23,8 +23,6 @@ struct ngx_http_lua_balancer_peer_data_s {
2323 ngx_http_lua_srv_conf_t * conf ;
2424 ngx_http_request_t * request ;
2525
26- ngx_event_get_peer_pt get_rr_peer ;
27-
2826 ngx_uint_t more_tries ;
2927 ngx_uint_t total_tries ;
3028
@@ -38,6 +36,10 @@ struct ngx_http_lua_balancer_peer_data_s {
3836};
3937
4038
39+ static ngx_int_t ngx_http_lua_balancer_set_session (ngx_peer_connection_t * pc ,
40+ void * data );
41+ static void ngx_http_lua_balancer_save_session (ngx_peer_connection_t * pc ,
42+ void * data );
4143static ngx_int_t ngx_http_lua_balancer_init (ngx_conf_t * cf ,
4244 ngx_http_upstream_srv_conf_t * us );
4345static ngx_int_t ngx_http_lua_balancer_init_peer (ngx_http_request_t * r ,
@@ -232,10 +234,14 @@ ngx_http_lua_balancer_init_peer(ngx_http_request_t *r,
232234 r -> upstream -> peer .get = ngx_http_lua_balancer_get_peer ;
233235 r -> upstream -> peer .free = ngx_http_lua_balancer_free_peer ;
234236
237+ #if (NGX_HTTP_SSL )
238+ r -> upstream -> peer .set_session = ngx_http_lua_balancer_set_session ;
239+ r -> upstream -> peer .save_session = ngx_http_lua_balancer_save_session ;
240+ #endif
241+
235242 bcf = ngx_http_conf_upstream_srv_conf (us , ngx_http_lua_module );
236243
237244 bp -> conf = bcf ;
238- bp -> get_rr_peer = ngx_http_upstream_get_round_robin_peer ;
239245 bp -> request = r ;
240246
241247 return NGX_OK ;
@@ -329,7 +335,7 @@ ngx_http_lua_balancer_get_peer(ngx_peer_connection_t *pc, void *data)
329335 return NGX_OK ;
330336 }
331337
332- return bp -> get_rr_peer (pc , & bp -> rrp );
338+ return ngx_http_upstream_get_round_robin_peer (pc , & bp -> rrp );
333339}
334340
335341
@@ -410,6 +416,39 @@ ngx_http_lua_balancer_free_peer(ngx_peer_connection_t *pc, void *data,
410416}
411417
412418
419+ #if (NGX_HTTP_SSL )
420+
421+ static ngx_int_t
422+ ngx_http_lua_balancer_set_session (ngx_peer_connection_t * pc , void * data )
423+ {
424+ ngx_http_lua_balancer_peer_data_t * bp = data ;
425+
426+ if (bp -> sockaddr && bp -> socklen ) {
427+ /* TODO */
428+ return NGX_OK ;
429+ }
430+
431+ return ngx_http_upstream_set_round_robin_peer_session (pc , & bp -> rrp );
432+ }
433+
434+
435+ static void
436+ ngx_http_lua_balancer_save_session (ngx_peer_connection_t * pc , void * data )
437+ {
438+ ngx_http_lua_balancer_peer_data_t * bp = data ;
439+
440+ if (bp -> sockaddr && bp -> socklen ) {
441+ /* TODO */
442+ return ;
443+ }
444+
445+ ngx_http_upstream_save_round_robin_peer_session (pc , & bp -> rrp );
446+ return ;
447+ }
448+
449+ #endif
450+
451+
413452#ifndef NGX_LUA_NO_FFI_API
414453
415454int
0 commit comments