@@ -590,14 +590,6 @@ All parameters are optional:
590590 fcntl (csock , F_SETFL , ~O_NONBLOCK ); /* Don't block client connections */
591591 printl (LOG_INFO , "Client: [%d], IP: [%s] accepted" , cn ++ , inet2str (& caddr , buf ));
592592
593- /* -- Get the client original destination from NAT ---------------------------------------------------------- */
594-
595- /* Initialize daddr */
596- daddr_len = sizeof (daddr .ip_addr );
597- memset (& daddr .ip_addr , 0 , daddr_len );
598- memset (& daddr .name , 0 , sizeof (daddr .name ) - 1 );
599- daddr .ip_addr .ss_family = caddr .ss_family ;
600-
601593 /* -- Process the PIDs list: remove exitted clients and execute workload balance functions ------------------ */
602594 c = pids ;
603595
@@ -609,7 +601,7 @@ All parameters are optional:
609601
610602 while (c ) {
611603 push_ini = NULL ;
612- if (!c -> section_name || strlen (c -> section_name ) == 0 ) {
604+ if (c -> traffic . daddr . ss_family && ( !c -> section_name || strlen (c -> section_name ) == 0 ) ) {
613605 tmp_daddr .ip_addr = c -> traffic .daddr ;
614606 if ((push_ini = ini_look_server (ini_root , tmp_daddr ))) {
615607 free (c -> section_name );
@@ -619,7 +611,8 @@ All parameters are optional:
619611
620612 if (c == pids && c -> status >= 0 ) { /* Remove pidlist root entry */
621613 pids = c -> next ;
622- if (!push_ini ) push_ini = getsection (ini_root , c -> section_name );
614+ if (!push_ini && c -> section_name && c -> section_name [0 ])
615+ push_ini = getsection (ini_root , c -> section_name );
623616 if (c -> status && push_ini && push_ini -> section_balance != SECTION_BALANCE_NONE )
624617 pushback_ini (& ini_root , push_ini );
625618 free (c -> section_name );
@@ -628,13 +621,15 @@ All parameters are optional:
628621 } else if (c && c -> next && c -> next -> status >= 0 ) { /* Remove a pidlist entry */
629622 d = c -> next ;
630623 c -> next = d -> next ;
631- if (!push_ini ) push_ini = getsection (ini_root , c -> section_name );
624+ if (!push_ini && c -> section_name && c -> section_name [0 ])
625+ push_ini = getsection (ini_root , c -> section_name );
632626 if (d -> status && push_ini && push_ini -> section_balance != SECTION_BALANCE_NONE )
633627 pushback_ini (& ini_root , push_ini );
634628 free (d -> section_name );
635629 free (d );
636630 } else {
637- if (!push_ini ) push_ini = getsection (ini_root , c -> section_name );
631+ if (!push_ini && c -> section_name && c -> section_name [0 ])
632+ push_ini = getsection (ini_root , c -> section_name );
638633 if (push_ini && push_ini -> section_balance == SECTION_BALANCE_ROUNDROBIN )
639634 pushback_ini (& ini_root , push_ini );
640635 }
@@ -653,12 +648,18 @@ All parameters are optional:
653648 close (csock );
654649
655650 /* Save the client into the list */
656- pids = pidlist_add (pids , s_ini ? s_ini -> section_name : "" , cpid , caddr , daddr .ip_addr );
651+ pids = pidlist_add (pids , "" , cpid , caddr , tmp_daddr .ip_addr );
657652 }
658653
659654 if (cpid == 0 ) {
660655 /* -- Client processing (child) ------------------------------------------------------------------------- */
661656
657+ /* Initialize daddr */
658+ daddr_len = sizeof (daddr .ip_addr );
659+ memset (& daddr .ip_addr , 0 , daddr_len );
660+ memset (& daddr .name , 0 , sizeof (daddr .name ) - 1 );
661+ daddr .ip_addr .ss_family = caddr .ss_family ;
662+
662663 ssock .t = CHS_SOCKET ; /* Type socket */
663664 #if (WITH_LIBSSH2 )
664665 ssock .c = NULL ;
0 commit comments