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