Mercurial > dovecot > original-hg > dovecot-1.2
comparison src/master/login-process.c @ 2046:6ae973f60f43 HEAD
logging cleanups.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 23 May 2004 22:23:57 +0300 |
parents | c7c19f5071c3 |
children | 4e77cb0aff21 |
comparison
equal
deleted
inserted
replaced
2045:c7b50945591e | 2046:6ae973f60f43 |
---|---|
420 } | 420 } |
421 | 421 |
422 static pid_t create_login_process(struct login_group *group) | 422 static pid_t create_login_process(struct login_group *group) |
423 { | 423 { |
424 static const char *argv[] = { NULL, NULL }; | 424 static const char *argv[] = { NULL, NULL }; |
425 struct log_io *log; | |
425 const char *prefix; | 426 const char *prefix; |
426 pid_t pid; | 427 pid_t pid; |
427 int fd[2], log_fd; | 428 int fd[2], log_fd; |
428 | 429 |
429 if (group->set->login_process_per_connection && | 430 if (group->set->login_process_per_connection && |
440 if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) { | 441 if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) { |
441 i_error("socketpair() failed: %m"); | 442 i_error("socketpair() failed: %m"); |
442 return -1; | 443 return -1; |
443 } | 444 } |
444 | 445 |
445 prefix = t_strdup_printf("%s-login: ", | 446 log_fd = log_create_pipe(&log); |
446 process_names[group->process_type]); | |
447 log_fd = log_create_pipe(prefix); | |
448 if (log_fd < 0) | 447 if (log_fd < 0) |
449 pid = -1; | 448 pid = -1; |
450 else { | 449 else { |
451 pid = fork(); | 450 pid = fork(); |
452 if (pid < 0) | 451 if (pid < 0) |
460 return -1; | 459 return -1; |
461 } | 460 } |
462 | 461 |
463 if (pid != 0) { | 462 if (pid != 0) { |
464 /* master */ | 463 /* master */ |
464 prefix = t_strdup_printf("%s-login: ", | |
465 process_names[group->process_type]); | |
466 log_set_prefix(log, prefix); | |
467 | |
465 net_set_nonblock(fd[0], TRUE); | 468 net_set_nonblock(fd[0], TRUE); |
466 fd_close_on_exec(fd[0], TRUE); | 469 fd_close_on_exec(fd[0], TRUE); |
467 (void)login_process_new(group, pid, fd[0]); | 470 (void)login_process_new(group, pid, fd[0]); |
468 (void)close(fd[1]); | 471 (void)close(fd[1]); |
469 (void)close(log_fd); | 472 (void)close(log_fd); |
470 return pid; | 473 return pid; |
471 } | 474 } |
472 | 475 |
476 prefix = t_strdup_printf("master-%s-login: ", | |
477 process_names[group->process_type]); | |
478 log_set_prefix(log, prefix); | |
479 | |
473 /* move the listen handle */ | 480 /* move the listen handle */ |
474 if (dup2(group->set->listen_fd, LOGIN_LISTEN_FD) < 0) | 481 if (dup2(group->set->listen_fd, LOGIN_LISTEN_FD) < 0) |
475 i_fatal("login: dup2(listen_fd) failed: %m"); | 482 i_fatal("dup2(listen_fd) failed: %m"); |
476 fd_close_on_exec(LOGIN_LISTEN_FD, FALSE); | 483 fd_close_on_exec(LOGIN_LISTEN_FD, FALSE); |
477 | 484 |
478 /* move the SSL listen handle */ | 485 /* move the SSL listen handle */ |
479 if (dup2(group->set->ssl_listen_fd, LOGIN_SSL_LISTEN_FD) < 0) | 486 if (dup2(group->set->ssl_listen_fd, LOGIN_SSL_LISTEN_FD) < 0) |
480 i_fatal("login: dup2(ssl_listen_fd) failed: %m"); | 487 i_fatal("dup2(ssl_listen_fd) failed: %m"); |
481 fd_close_on_exec(LOGIN_SSL_LISTEN_FD, FALSE); | 488 fd_close_on_exec(LOGIN_SSL_LISTEN_FD, FALSE); |
482 | 489 |
483 /* move communication handle */ | 490 /* move communication handle */ |
484 if (dup2(fd[1], LOGIN_MASTER_SOCKET_FD) < 0) | 491 if (dup2(fd[1], LOGIN_MASTER_SOCKET_FD) < 0) |
485 i_fatal("login: dup2(master) failed: %m"); | 492 i_fatal("dup2(master) failed: %m"); |
486 fd_close_on_exec(LOGIN_MASTER_SOCKET_FD, FALSE); | 493 fd_close_on_exec(LOGIN_MASTER_SOCKET_FD, FALSE); |
487 | 494 |
488 if (dup2(log_fd, 2) < 0) | 495 if (dup2(log_fd, 2) < 0) |
489 i_fatal("login: dup2(stderr) failed: %m"); | 496 i_fatal("dup2(stderr) failed: %m"); |
490 fd_close_on_exec(2, FALSE); | 497 fd_close_on_exec(2, FALSE); |
491 | 498 |
492 (void)close(fd[0]); | 499 (void)close(fd[0]); |
493 (void)close(fd[1]); | 500 (void)close(fd[1]); |
494 | 501 |