After a rage with TRS, allowed `dispense acct` to take -ve, disabled new background...
authorJohn Hodge <[email protected]>
Fri, 25 Feb 2011 07:24:33 +0000 (15:24 +0800)
committerJohn Hodge <[email protected]>
Fri, 25 Feb 2011 07:24:33 +0000 (15:24 +0800)
src/server/dispense.c
src/server/server.c

index 215e580..23e73af 100644 (file)
@@ -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;
index 5102f62..fa50f0d 100644 (file)
@@ -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 ) {

UCC git Repository :: git.ucc.asn.au