Lines Matching refs:adhost

102 descriptors_cleanup(struct adist_host *adhost)  in descriptors_cleanup()  argument
108 if (adh == adhost) in descriptors_cleanup()
124 child_cleanup(struct adist_host *adhost) in child_cleanup() argument
127 if (adhost->adh_conn != NULL) { in child_cleanup()
128 PJDLOG_ASSERT(adhost->adh_role == ADIST_ROLE_SENDER); in child_cleanup()
129 proto_close(adhost->adh_conn); in child_cleanup()
130 adhost->adh_conn = NULL; in child_cleanup()
132 adhost->adh_worker_pid = 0; in child_cleanup()
154 struct adist_host *adhost; in child_exit() local
162 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in child_exit()
163 if (pid == adhost->adh_worker_pid) in child_exit()
166 if (adhost == NULL) { in child_exit()
169 if (adhost->adh_role == ADIST_ROLE_SENDER) in child_exit()
171 pjdlog_prefix_set("[%s] (%s) ", adhost->adh_name, in child_exit()
172 role2str(adhost->adh_role)); in child_exit()
174 child_cleanup(adhost); in child_exit()
182 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in child_exit()
183 if (adhost->adh_role != ADIST_ROLE_SENDER) in child_exit()
185 if (adhost->adh_worker_pid != 0) in child_exit()
187 pjdlog_prefix_set("[%s] (%s) ", adhost->adh_name, in child_exit()
188 role2str(adhost->adh_role)); in child_exit()
190 adist_sender(adcfg, adhost); in child_exit()
206 struct adist_host *adhost; in terminate_workers() local
209 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in terminate_workers()
210 if (adhost->adh_worker_pid == 0) in terminate_workers()
213 adhost->adh_name, role2str(adhost->adh_role), in terminate_workers()
214 adhost->adh_worker_pid); in terminate_workers()
215 if (kill(adhost->adh_worker_pid, SIGTERM) == 0) in terminate_workers()
219 adhost->adh_name, role2str(adhost->adh_role), in terminate_workers()
220 adhost->adh_worker_pid); in terminate_workers()
228 struct adist_host *adhost; in listen_accept() local
256 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in listen_accept()
257 if (adhost->adh_role != ADIST_ROLE_RECEIVER) in listen_accept()
259 if (!proto_address_match(conn, adhost->adh_remoteaddr)) in listen_accept()
263 if (adhost == NULL) { in listen_accept()
274 adhost->adh_remoteaddr); in listen_accept()
280 adhost->adh_remoteaddr); in listen_accept()
290 adhost->adh_remoteaddr); in listen_accept()
294 if (proto_recv(conn, adname, sizeof(adhost->adh_name)) < 0) { in listen_accept()
301 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in listen_accept()
302 if (adhost->adh_role != ADIST_ROLE_RECEIVER) in listen_accept()
304 if (!proto_address_match(conn, adhost->adh_remoteaddr)) in listen_accept()
306 if (strcmp(adhost->adh_name, adname) != 0) in listen_accept()
310 if (adhost == NULL) { in listen_accept()
316 adhost->adh_version = version; in listen_accept()
317 pjdlog_debug(1, "Version %d negotiated with %s.", adhost->adh_version, in listen_accept()
318 adhost->adh_remoteaddr); in listen_accept()
321 pjdlog_prefix_set("[%s] (%s) ", adhost->adh_name, in listen_accept()
322 role2str(adhost->adh_role)); in listen_accept()
332 adhost->adh_remoteaddr); in listen_accept()
339 adhost->adh_remoteaddr); in listen_accept()
344 if (HMAC(EVP_sha256(), adhost->adh_password, in listen_accept()
345 (int)strlen(adhost->adh_password), rnd, (int)sizeof(rnd), hash, in listen_accept()
354 adhost->adh_remoteaddr); in listen_accept()
361 adhost->adh_remoteaddr); in listen_accept()
366 if (HMAC(EVP_sha256(), adhost->adh_password, in listen_accept()
367 (int)strlen(adhost->adh_password), rnd, (int)sizeof(rnd), hash, in listen_accept()
376 adhost->adh_remoteaddr); in listen_accept()
381 if (adhost->adh_worker_pid != 0) { in listen_accept()
384 (unsigned int)adhost->adh_worker_pid); in listen_accept()
386 if (kill(adhost->adh_worker_pid, SIGINT) == -1) { in listen_accept()
389 (unsigned int)adhost->adh_worker_pid); in listen_accept()
396 else if ((pid = waitpid(adhost->adh_worker_pid, in listen_accept()
397 &status, 0)) != adhost->adh_worker_pid) { in listen_accept()
401 (unsigned int)adhost->adh_worker_pid); in listen_accept()
403 child_exit_log("Worker", adhost->adh_worker_pid, in listen_accept()
406 child_cleanup(adhost); in listen_accept()
409 adhost->adh_remote = conn; in listen_accept()
410 adist_receiver(adcfg, adhost); in listen_accept()
420 connection_migrate(struct adist_host *adhost) in connection_migrate() argument
425 pjdlog_prefix_set("[%s] (%s) ", adhost->adh_name, in connection_migrate()
426 role2str(adhost->adh_role)); in connection_migrate()
428 PJDLOG_ASSERT(adhost->adh_role == ADIST_ROLE_SENDER); in connection_migrate()
430 if (proto_recv(adhost->adh_conn, &val, sizeof(val)) < 0) { in connection_migrate()
435 if (proto_set("tls:fingerprint", adhost->adh_fingerprint) == -1) { in connection_migrate()
440 if (proto_connect(adhost->adh_localaddr[0] != '\0' ? in connection_migrate()
441 adhost->adh_localaddr : NULL, in connection_migrate()
442 adhost->adh_remoteaddr, -1, &conn) < 0) { in connection_migrate()
445 adhost->adh_remoteaddr); in connection_migrate()
450 if (proto_send(adhost->adh_conn, &val, sizeof(val)) < 0) { in connection_migrate()
454 if (val == 0 && proto_connection_send(adhost->adh_conn, conn) < 0) in connection_migrate()
499 struct adist_host *adhost; in main_loop() local
524 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in main_loop()
525 if (adhost->adh_role == ADIST_ROLE_SENDER) { in main_loop()
527 PJDLOG_ASSERT(adhost->adh_conn != NULL); in main_loop()
528 fd = proto_descriptor(adhost->adh_conn); in main_loop()
533 PJDLOG_ASSERT(adhost->adh_conn == NULL); in main_loop()
565 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in main_loop()
566 if (adhost->adh_role == ADIST_ROLE_SENDER) { in main_loop()
567 PJDLOG_ASSERT(adhost->adh_conn != NULL); in main_loop()
568 if (FD_ISSET(proto_descriptor(adhost->adh_conn), in main_loop()
570 connection_migrate(adhost); in main_loop()
573 PJDLOG_ASSERT(adhost->adh_conn == NULL); in main_loop()
582 struct adist_host *adhost; in adist_config_dump() local
599 TAILQ_FOREACH(adhost, &cfg->adc_hosts, adh_next) { in adist_config_dump()
600 pjdlog_debug(2, " name: %s", adhost->adh_name); in adist_config_dump()
601 pjdlog_debug(2, " role: %s", role2str(adhost->adh_role)); in adist_config_dump()
602 pjdlog_debug(2, " version: %d", adhost->adh_version); in adist_config_dump()
603 pjdlog_debug(2, " localaddr: %s", adhost->adh_localaddr); in adist_config_dump()
604 pjdlog_debug(2, " remoteaddr: %s", adhost->adh_remoteaddr); in adist_config_dump()
605 pjdlog_debug(2, " remote: %p", adhost->adh_remote); in adist_config_dump()
606 pjdlog_debug(2, " directory: %s", adhost->adh_directory); in adist_config_dump()
607 pjdlog_debug(2, " compression: %d", adhost->adh_compression); in adist_config_dump()
608 pjdlog_debug(2, " checksum: %d", adhost->adh_checksum); in adist_config_dump()
609 pjdlog_debug(2, " pid: %ld", (long)adhost->adh_worker_pid); in adist_config_dump()
610 pjdlog_debug(2, " conn: %p", adhost->adh_conn); in adist_config_dump()
623 struct adist_host *adhost; in main() local
790 TAILQ_FOREACH(adhost, &adcfg->adc_hosts, adh_next) { in main()
791 if (adhost->adh_role == ADIST_ROLE_SENDER) in main()
792 adist_sender(adcfg, adhost); in main()