| 38 |
#include <sys/wait.h> |
#include <sys/wait.h> |
| 39 |
#include <sys/epoll.h> |
#include <sys/epoll.h> |
| 40 |
#include <arpa/inet.h> |
#include <arpa/inet.h> |
| 41 |
|
#include <netinet/in.h> |
| 42 |
#include <systemd/sd-daemon.h> |
#include <systemd/sd-daemon.h> |
| 43 |
|
|
| 44 |
struct process_sockaddr_t |
struct process_sockaddr_t |
| 48 |
}; |
}; |
| 49 |
typedef struct process_sockaddr_t PROCESS_SOCKADDR; |
typedef struct process_sockaddr_t PROCESS_SOCKADDR; |
| 50 |
|
|
| 51 |
static PROCESS_SOCKADDR process_sockaddr_pool[MAX_CLIENTS_LIMIT]; |
static PROCESS_SOCKADDR process_sockaddr_pool[MAX_CLIENT_LIMIT]; |
| 52 |
|
|
| 53 |
int net_server(const char *hostaddr, in_port_t port) |
int net_server(const char *hostaddr, in_port_t port) |
| 54 |
{ |
{ |
| 157 |
SYS_child_process_count--; |
SYS_child_process_count--; |
| 158 |
log_std("Child process (%d) exited\n", siginfo.si_pid); |
log_std("Child process (%d) exited\n", siginfo.si_pid); |
| 159 |
|
|
| 160 |
i = 0; |
if (siginfo.si_pid != section_list_loader_pid) |
|
for (; i < BBS_max_client; i++) |
|
| 161 |
{ |
{ |
| 162 |
if (process_sockaddr_pool[i].pid == siginfo.si_pid) |
i = 0; |
| 163 |
|
for (; i < BBS_max_client; i++) |
| 164 |
{ |
{ |
| 165 |
process_sockaddr_pool[i].pid = 0; |
if (process_sockaddr_pool[i].pid == siginfo.si_pid) |
| 166 |
break; |
{ |
| 167 |
|
process_sockaddr_pool[i].pid = 0; |
| 168 |
|
break; |
| 169 |
|
} |
| 170 |
|
} |
| 171 |
|
if (i >= BBS_max_client) |
| 172 |
|
{ |
| 173 |
|
log_error("Child process (%d) not found in process sockaddr pool\n", siginfo.si_pid); |
| 174 |
} |
} |
|
} |
|
|
if (i >= BBS_max_client) |
|
|
{ |
|
|
log_error("Child process (%d) not found in process sockaddr pool\n", siginfo.si_pid); |
|
| 175 |
} |
} |
| 176 |
} |
} |
| 177 |
else if (ret == 0) |
else if (ret == 0) |