X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=src%2Fserver%2Fserver.c;h=4c686d94bc2e4c4c277962ff29cc97eb2d3bf555;hb=792c0789eecbad303f8b65da8513d5c01bdc648e;hp=9691b69850f9798bfa1787ed801d8bf7f2693671;hpb=f8d49ca9dfebf179382b1ddc3a47d503d719be11;p=tpg%2Fopendispense2.git diff --git a/src/server/server.c b/src/server/server.c index 9691b69..4c686d9 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -297,23 +297,24 @@ void Server_ParseClientCommand(tClient *Client, char *CommandString) { char *command, *args; int i; - #if 0 - char **argList; - int numArgs = 0; - #endif + + if( giDebugLevel >= 2 ) + Debug(Client, "Server_ParseClientCommand: (CommandString = '%s')", CommandString); if( Server_int_ParseArgs(1, CommandString, &command, &args, NULL) ) { printf("command=%s, args=%s\n", command, args); // Is this an error? (just ignore for now) - args = ""; + //args = ""; } // Find command for( i = 0; i < NUM_COMMANDS; i++ ) { - if(strcmp(CommandString, gaServer_Commands[i].Name) == 0) { + if(strcmp(command, gaServer_Commands[i].Name) == 0) { + if( giDebugLevel >= 2 ) + Debug(Client, "CMD %s - \"%s\"", command, args); gaServer_Commands[i].Function(Client, args); return ; } @@ -429,6 +430,8 @@ void Server_Cmd_AUTOAUTH(tClient *Client, char *Args) // You can't be an internal account if( Bank_GetFlags(Client->UID) & USER_FLAG_INTERNAL ) { + if(giDebugLevel) + Debug(Client, "Autoauth as '%s', not allowed", username); Client->UID = -1; sendf(Client->Socket, "401 Auth Failure\n"); return ; @@ -1181,11 +1184,20 @@ int sendf(int Socket, const char *Format, ...) int Server_int_ParseArgs(int bUseLongLast, char *ArgStr, ...) { va_list args; - char savedChar = *ArgStr; + char savedChar; char **dest; va_start(args, ArgStr); - printf("Server_int_ParseArgs: ArgStr = '%s'\n", ArgStr); + // Check for null + if( !ArgStr ) + { + while( (dest = va_arg(args, char **)) ) + *dest = NULL; + va_end(args); + return 1; + } + + savedChar = *ArgStr; while( (dest = va_arg(args, char **)) ) { @@ -1201,20 +1213,22 @@ int Server_int_ParseArgs(int bUseLongLast, char *ArgStr, ...) do { *dest = NULL; } while( (dest = va_arg(args, char **)) ); + va_end(args); return -1; } - // Set destination - *dest = ArgStr; - if( *ArgStr == '"' ) { + ArgStr ++; + *dest = ArgStr; // Read until quote while( *ArgStr && *ArgStr != '"' ) ArgStr ++; } else { + // Set destination + *dest = ArgStr; // Read until a space while( *ArgStr && *ArgStr != ' ' && *ArgStr != '\t' ) ArgStr ++; @@ -1223,10 +1237,12 @@ int Server_int_ParseArgs(int bUseLongLast, char *ArgStr, ...) *ArgStr = '\0'; ArgStr ++; } + va_end(args); // Oops, extra arguments, and greedy not set - if( savedChar == ' ' && bUseLongLast ) + if( (savedChar == ' ' || savedChar == '\t') && !bUseLongLast ) { return -1; + } // Un-mangle last if(bUseLongLast) { @@ -1234,8 +1250,6 @@ int Server_int_ParseArgs(int bUseLongLast, char *ArgStr, ...) *ArgStr = savedChar; } - va_end(args); - return 0; // Success! }