From cd9ffda7ad34fbd43a4d2c48f05920becd1f9655 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Wed, 10 Nov 2010 17:40:11 +0000 Subject: [PATCH] Added the TCP mode command delimiter # to the Client/Server protocoll. If commands get caught up together, an Error is returned. This is only relevant for the daqop. Boris --- libtrbnet/trbcmd.c | 111 +++++++++++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 45 deletions(-) diff --git a/libtrbnet/trbcmd.c b/libtrbnet/trbcmd.c index 9d1fd1f..9c001a9 100644 --- a/libtrbnet/trbcmd.c +++ b/libtrbnet/trbcmd.c @@ -22,10 +22,10 @@ #ifndef HEXMODE #define HEXMODE 0 #endif - + static int hexMode = HEXMODE; -static const char trbcmd_version[] = "$Revision: 2.60 $"; +static const char trbcmd_version[] = "$Revision: 2.61 $"; #define BACKLOG 10 static uint16_t tcp_port = 55555; @@ -1421,51 +1421,72 @@ int main(int argc, char **argv) fprintf(stderr, "%d: empty package\n", myPid); continue; } - msgLen -= 2; + + + msgLen -= 3; command[msgLen] = '\0'; - - start_argv[start_argc++] = argv[0]; - for (i = 0; i < (unsigned int)msgLen; i++) { - if (isspace((int)command[i]) != 0) { - command[i] = '\0'; - } - if (command[i] != '\0') { - if (start_arg == 0) { - start_argv[start_argc++] = &command[i]; - start_arg = 1; - } else { - continue; - } - } else { - command[i] = '\0'; - start_arg = 0; - } - } - - if (tcp_debug > 0) { - fprintf(stderr, "%d: received: %i\n", myPid, msgLen); - if (msgLen > 0) { - fprintf(stderr, "%d: command: ", myPid); - for (i = 1; i < (unsigned int)start_argc; i++) { - fprintf(stderr, "%s ", start_argv[i]); - } - fprintf(stderr, "\n"); - } - } - - /* Execute command */ - if (start_argc == 1) continue; - if ((strcmp(start_argv[1], "exit") == 0) || - (strcmp(start_argv[1], "quit") == 0)) { - if (tcp_debug > 0) { - fprintf(stderr, "%d: client disconnected\n", myPid); - } - exit(EXIT_SUCCESS); + + char *p; + p = strpbrk( command, "#"); + if (p != NULL){ + fprintf(stdout, ">ERROR: The client transfered 2 commands as one."); + fprintf(clientout, "\n----------------------------\n\n"); + fflush(clientout); + if (tcp_debug > 0) { + fprintf(stderr, "%d: received: %i\n", myPid, msgLen); + if (msgLen > 0) { + fprintf(stderr, "%d: command: ", myPid); + for (i = 1; i < (unsigned int)start_argc; i++) { + fprintf(stderr, "%s ", start_argv[i]); + } + fprintf(stderr, "\n"); + } + } + } + else{ + start_argv[start_argc++] = argv[0]; + for (i = 0; i < (unsigned int)msgLen; i++) { + if (isspace((int)command[i]) != 0) { + command[i] = '\0'; + } + if (command[i] != '\0') { + if (start_arg == 0) { + start_argv[start_argc++] = &command[i]; + start_arg = 1; + } else { + continue; + } + } else { + command[i] = '\0'; + start_arg = 0; + } + } + + if (tcp_debug > 0) { + fprintf(stderr, "%d: received: %i\n", myPid, msgLen); + if (msgLen > 0) { + fprintf(stderr, "%d: command: ", myPid); + for (i = 1; i < (unsigned int)start_argc; i++) { + fprintf(stderr, "%s ", start_argv[i]); + } + fprintf(stderr, "\n"); + } + } + + /* Execute command */ + if (start_argc == 1) continue; + if ((strcmp(start_argv[1], "exit") == 0) || + (strcmp(start_argv[1], "quit") == 0)) { + if (tcp_debug > 0) { + fprintf(stderr, "%d: client disconnected\n", myPid); + } + exit(EXIT_SUCCESS); + } + + start(start_argc, start_argv); + fprintf(clientout, "\n----------------------------\n\n"); + fflush(clientout); } - - start(start_argc, start_argv); - fprintf(clientout, "\n----------------------------\n\n"); - fflush(clientout); } } } -- 2.43.0