From 8948b2c5efc889714a73a861195e053190071df3 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 25 Feb 2011 15:24:33 +0800 Subject: [PATCH] After a rage with TRS, allowed `dispense acct` to take -ve, disabled new background code --- src/server/dispense.c | 18 +++++++++++------- src/server/server.c | 30 ++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/server/dispense.c b/src/server/dispense.c index 215e580..23e73af 100644 --- a/src/server/dispense.c +++ b/src/server/dispense.c @@ -146,7 +146,11 @@ int DispenseAdd(int ActualUser, int User, int Ammount, const char *ReasonGiven) int ret; char *dstName, *byName; - ret = _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Ammount, ReasonGiven ); +#if DISPENSE_ADD_BELOW_MIN +// ret = _Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Ammount, ReasonGiven ); +#else + ret = Bank_Transfer( Bank_GetAcctByName(COKEBANK_DEBT_ACCT), User, Ammount, ReasonGiven ); +#endif if(ret) return 2; byName = Bank_GetAcctName(ActualUser); @@ -229,11 +233,11 @@ int _GetMinBalance(int Account) // - Internal accounts have no lower bound if( flags & USER_FLAG_INTERNAL ) return INT_MIN; - // Admin to -$10 - //if( flags & USER_FLAG_ADMIN ) return -1000; + // Admin to -$50 + if( flags & USER_FLAG_ADMIN ) return -5000; - // Coke to -$5 - //if( flags & USER_FLAG_COKE ) return -500; + // Coke to -$20 + if( flags & USER_FLAG_COKE ) return -2000; // Anyone else, non-negative return 0; @@ -246,12 +250,12 @@ int _CanTransfer(int Source, int Destination, int Ammount) { if( Ammount > 0 ) { - if( Bank_GetBalance(Source) + Ammount < _GetMinBalance(Source) ) + if( Bank_GetBalance(Source) - Ammount < _GetMinBalance(Source) ) return 0; } else { - if( Bank_GetBalance(Destination) - Ammount < _GetMinBalance(Destination) ) + if( Bank_GetBalance(Destination) + Ammount < _GetMinBalance(Destination) ) return 0; } return 1; diff --git a/src/server/server.c b/src/server/server.c index 5102f62..fa50f0d 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -99,9 +99,15 @@ const struct sClientCommand { #define NUM_COMMANDS ((int)(sizeof(gaServer_Commands)/sizeof(gaServer_Commands[0]))) // === GLOBALS === +// - Configuration int giServer_Port = 11020; - int giServer_NextClientID = 1; - int giServer_Socket; + int gbServer_RunInBackground = 0; +char *gsServer_LogFile = "/var/log/dispsrv.log"; +char *gsServer_ErrorLog = "/var/log/dispsrv.err"; +// - State variables + int giServer_Socket; // Server socket + int giServer_NextClientID = 1; // Debug client ID + // === CODE === /** @@ -133,6 +139,26 @@ void Server_Start(void) perror("Binding"); return ; } + +#if 0 + if( gbServer_RunInBackground ) + { + int pid = fork(); + if( pid == -1 ) { + fprintf(stderr, "ERROR: Unable to fork\n"); + perror("fork background"); + exit(-1); + } + if( pid != 0 ) { + // Parent, quit + exit(0); + } + // In child, sort out stdin/stdout + reopen(0, "/dev/null", O_READ); + reopen(1, gsServer_LogFile, O_CREAT|O_APPEND); + reopen(2, gsServer_ErrorLog, O_CREAT|O_APPEND); + } +#endif // Listen if( listen(giServer_Socket, MAX_CONNECTION_QUEUE) < 0 ) { -- 2.20.1