From: John Hodge Date: Sat, 19 Feb 2011 09:02:26 +0000 (+0800) Subject: Better door logging X-Git-Url: https://git.ucc.asn.au/?p=tpg%2Fopendispense2.git;a=commitdiff_plain;h=34beae3150e617103a1709ef5ba09d2d93f0ef0d Better door logging --- diff --git a/src/server/handler_door.c b/src/server/handler_door.c index e92463b..968c3b8 100644 --- a/src/server/handler_door.c +++ b/src/server/handler_door.c @@ -29,7 +29,6 @@ int Door_InitHandler(); int Door_CanDispense(int User, int Item); int Door_DoDispense(int User, int Item); -void Door_int_SIGCHLDHandler(int signum); // === GLOBALS === tHandler gDoor_Handler = { @@ -39,12 +38,10 @@ tHandler gDoor_Handler = { Door_DoDispense }; char *gsDoor_Password = ""; -volatile int giDoor_ChildTerminated; // == CODE === int Door_InitHandler(void) { - signal(SIGCHLD, Door_int_SIGCHLDHandler); return 0; } @@ -84,7 +81,6 @@ int Door_DoDispense(int User, int Item) int stdin_pair[2]; int stdout_pair[2]; pid_t childPid; - pid_t parent_pid; #endif #if DEBUG @@ -111,7 +107,6 @@ int Door_DoDispense(int User, int Item) return -1; } - parent_pid = getpid(); childPid = fork(); if( childPid < 0 ) @@ -129,7 +124,6 @@ int Door_DoDispense(int User, int Item) close(stdout_pair[0]); dup2(stdout_pair[1], 1); execl("/bin/sh", "sh", "-c", "llogin door -w-", NULL); - kill(parent_pid, SIGCHLD); perror("execl"); exit(-1); } @@ -149,10 +143,20 @@ int Door_DoDispense(int User, int Item) } #endif - if(fread(buf, 1, 512, child_stdin) == 0) return -1; + if(fread(buf, 1, 512, child_stdin) == 0) { + #if DEBUG + printf("Door_DoDispense: fread fail\n"); + #endif + return -1; + } // Send password - if( fputs(gsDoor_Password, child_stdin) <= 0 ) return -1; + if( fputs(gsDoor_Password, child_stdin) <= 0 ) { + #if DEBUG + printf("Door_DoDispense: fputs password\n"); + #endif + return -1; + } fputs("\n", child_stdin); @@ -161,7 +165,12 @@ int Door_DoDispense(int User, int Item) #endif // ATH1 - Unlock door - if( fputs("ATH1\n", child_stdin) <= 0) return -1; + if( fputs("ATH1\n", child_stdin) <= 0) { + #if DEBUG + printf("Door_DoDispense: fputs unlock\n"); + #endif + return -1; + } // Wait before re-locking sleep(DOOR_UNLOCKED_DELAY); @@ -172,7 +181,12 @@ int Door_DoDispense(int User, int Item) #endif // Re-lock the door - if( fputs("ATH0\n", child_stdin) <= 0 ) return -1; + if( fputs("ATH0\n", child_stdin) <= 0 ) { + #if DEBUG + printf("Door_DoDispense: fputs lock\n"); + #endif + return -1; + } #if !USE_POPEN fclose(child_stdin); @@ -189,9 +203,3 @@ int Door_DoDispense(int User, int Item) return 0; } -void Door_int_SIGCHLDHandler(int signum) -{ - signum = 0; // Snut up - giDoor_ChildTerminated = 1; -} -