fakesmsmc.c patch

"Nikos Balkanas" <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <000701c94a8c$a2840e10$02b2a8c0@tardis>
Dear list,

This patch will address the following issues in test/fakesmsc.c

1) fakesmsc will no longer hangup on conn_wait when delta == -1 (end) and will exit as soon as messages are finished.
2) Rudimentary matching of messages by comparing the to: field to the returned text. It is very simple, but better than nothing.
3) Better logging. Now from: and to: fields are displayed in the Sent msg.

If someone would care to explain me the logic behind interactive, I could also provide a serious multithreaded matrix tool able to grind the CPU to dust.

Fakesmsc.c.orig is the 1 month old CVS version.

BR,
Nikos

*** fakesmsc.c.orig Wed Nov 19 22:56:43 2008
--- fakesmsc.c Wed Nov 19 18:31:12 2008
***************
*** 230,236 ****
      double first_received_at, last_received_at;
      double first_sent_at, last_sent_at;
      double start_time, end_time;
!     double delta;
      int interactive, maxfd;
      char *cptr;
      char buffer[IN_BUFSIZE];
--- 230,236 ----
      double first_received_at, last_received_at;
      double first_sent_at, last_sent_at;
      double start_time, end_time;
!     double delta = 0;
      int interactive, maxfd;
      char *cptr;
      char buffer[IN_BUFSIZE];
***************
*** 237,242 ****
--- 237,243 ----
      fd_set rset;
      struct timeval alarm;
      FILE *fp;
+  char *p, from[25], to[11];
  
      gwlib_init();
      setup_signal_handlers();
***************
*** 245,251 ****
  
      mptr = get_and_set_debugs(argc, argv, check_args);
      num_msgs = argc - mptr;
!   
      interactive = 0;
      msgs = NULL;
      fp = NULL;
--- 246,252 ----
  
      mptr = get_and_set_debugs(argc, argv, check_args);
      num_msgs = argc - mptr;
! 
      interactive = 0;
      msgs = NULL;
      fp = NULL;
***************
*** 282,288 ****
      last_sent_at = 0;
  
      /* infinitely loop */
!     while (1) {
          /* Are we on interactive mode? */ 
          if (interactive == 1) {
              /* Check if we need to clean things up beforehand */
--- 283,289 ----
      last_sent_at = 0;
  
      /* infinitely loop */
!     while (interactive || delta >= 0) {
          /* Are we on interactive mode? */ 
          if (interactive == 1) {
              /* Check if we need to clean things up beforehand */
***************
*** 325,335 ****
                  panic(0, "write failed");
  
              ++num_sent;
              if (num_sent == max_send)
!                 info(0, "fakesmsc: sent message %ld", num_sent);
              else
!                 debug("send", 0, "fakesmsc: sent message %ld", num_sent);
!       
              if (rnd > 0)
                  octstr_destroy(msg);
  
--- 326,340 ----
                  panic(0, "write failed");
  
              ++num_sent;
+     strncpy(from, octstr_get_cstr(msg), 24);
+     p = strchr(from, ' ');
+     *p = '\0';
+     strncpy(to, ++p, 10);
+     if ((p = strchr(to, ' '))) *p = '\0';
              if (num_sent == max_send)
!                 info(0, "fakesmsc: Sent msg %ld <%s %s>", num_sent, to, from);
              else
!                 debug("send", 0, "fakesmsc: Sent msg %ld <%s %s>", num_sent, to, from);
              if (rnd > 0)
                  octstr_destroy(msg);
  
***************
*** 344,350 ****
                  delta = 0;
              if (num_sent >= max_send)
                  delta = -1;
!             conn_wait(server, delta);
              if (conn_error(server) || conn_eof(server) || sigint_received)
                  goto over;
  
--- 349,355 ----
                  delta = 0;
              if (num_sent >= max_send)
                  delta = -1;
!     if (delta > 0) conn_wait(server, delta);
              if (conn_error(server) || conn_eof(server) || sigint_received)
                  goto over;
  
***************
*** 353,369 ****
                  last_received_at = get_current_time();
                  if (first_received_at == 0)
                      first_received_at = last_received_at;
!                 ++num_received;
!                 if (num_received == max_send) {
!                     info(0, "Got message %ld: <%s>", num_received,
!                            octstr_get_cstr(line));
!                 } else {
!                     debug("receive", 0, "Got message %ld: <%s>", num_received,
!                           octstr_get_cstr(line));
!                 }
                  octstr_destroy(line);
              }
!         } while (delta > 0 || num_sent >= max_send);
      }
  
  over:
--- 358,378 ----
                  last_received_at = get_current_time();
                  if (first_received_at == 0)
                      first_received_at = last_received_at;
!       if (strstr(octstr_get_cstr(line), to))
!       {
!        ++num_received;
!        if (num_received == max_send) {
!          info(0, "Got message %ld: <%s>", num_received,
!           octstr_get_cstr(line));
!           break;
!        } else {
!          debug("receive", 0, "fakesmsc: Got msg %ld: <%s>", num_received,
!            octstr_get_cstr(line));
!        }
!       }
                  octstr_destroy(line);
              }
!         } while (delta > 0 || num_received < num_sent);
      }
  
  over:
***************
*** 394,397 ****
      
      return 0;
  }
fakesmsc.diff (application/octet-stream, 4.5 KB)
*** fakesmsc.c.orig	Wed Nov 19 22:56:43 2008
--- fakesmsc.c	Wed Nov 19 18:31:12 2008
***************
*** 230,236 ****
      double first_received_at, last_received_at;
      double first_sent_at, last_sent_at;
      double start_time, end_time;
!     double delta;
      int interactive, maxfd;
      char *cptr;
      char buffer[IN_BUFSIZE];
--- 230,236 ----
      double first_received_at, last_received_at;
      double first_sent_at, last_sent_at;
      double start_time, end_time;
!     double delta = 0;
      int interactive, maxfd;
      char *cptr;
      char buffer[IN_BUFSIZE];
***************
*** 237,242 ****
--- 237,243 ----
      fd_set rset;
      struct timeval alarm;
      FILE *fp;
+ 	char *p, from[25], to[11];
  
      gwlib_init();
      setup_signal_handlers();
***************
*** 245,251 ****
  
      mptr = get_and_set_debugs(argc, argv, check_args);
      num_msgs = argc - mptr;
! 		
      interactive = 0;
      msgs = NULL;
      fp = NULL;
--- 246,252 ----
  
      mptr = get_and_set_debugs(argc, argv, check_args);
      num_msgs = argc - mptr;
! 
      interactive = 0;
      msgs = NULL;
      fp = NULL;
***************
*** 282,288 ****
      last_sent_at = 0;
  
      /* infinitely loop */
!     while (1) {
          /* Are we on interactive mode? */ 
          if (interactive == 1) {
              /* Check if we need to clean things up beforehand */
--- 283,289 ----
      last_sent_at = 0;
  
      /* infinitely loop */
!     while (interactive || delta >= 0) {
          /* Are we on interactive mode? */ 
          if (interactive == 1) {
              /* Check if we need to clean things up beforehand */
***************
*** 325,335 ****
                  panic(0, "write failed");
  
              ++num_sent;
              if (num_sent == max_send)
!                 info(0, "fakesmsc: sent message %ld", num_sent);
              else
!                 debug("send", 0, "fakesmsc: sent message %ld", num_sent);
!       
              if (rnd > 0)
                  octstr_destroy(msg);
  
--- 326,340 ----
                  panic(0, "write failed");
  
              ++num_sent;
+ 				strncpy(from, octstr_get_cstr(msg), 24);
+ 				p = strchr(from, ' ');
+ 				*p = '\0';
+ 				strncpy(to, ++p, 10);
+ 				if ((p = strchr(to, ' '))) *p = '\0';
              if (num_sent == max_send)
!                 info(0, "fakesmsc: Sent msg %ld <%s %s>", num_sent, to, from);
              else
!                 debug("send", 0, "fakesmsc: Sent msg %ld <%s %s>", num_sent, to, from);
              if (rnd > 0)
                  octstr_destroy(msg);
  
***************
*** 344,350 ****
                  delta = 0;
              if (num_sent >= max_send)
                  delta = -1;
!             conn_wait(server, delta);
              if (conn_error(server) || conn_eof(server) || sigint_received)
                  goto over;
  
--- 349,355 ----
                  delta = 0;
              if (num_sent >= max_send)
                  delta = -1;
! 				if (delta > 0) conn_wait(server, delta);
              if (conn_error(server) || conn_eof(server) || sigint_received)
                  goto over;
  
***************
*** 353,369 ****
                  last_received_at = get_current_time();
                  if (first_received_at == 0)
                      first_received_at = last_received_at;
!                 ++num_received;
!                 if (num_received == max_send) {
!                     info(0, "Got message %ld: <%s>", num_received,
!                            octstr_get_cstr(line));
!                 } else {
!                     debug("receive", 0, "Got message %ld: <%s>", num_received,
!                           octstr_get_cstr(line));
!                 }
                  octstr_destroy(line);
              }
!         } while (delta > 0 || num_sent >= max_send);
      }
  
  over:
--- 358,378 ----
                  last_received_at = get_current_time();
                  if (first_received_at == 0)
                      first_received_at = last_received_at;
! 					 if (strstr(octstr_get_cstr(line), to))
! 					 {
! 						 ++num_received;
! 						 if (num_received == max_send) {
! 							  info(0, "Got message %ld: <%s>", num_received,
! 										octstr_get_cstr(line));
! 										break;
! 						 } else {
! 							  debug("receive", 0, "fakesmsc: Got msg %ld: <%s>", num_received,
! 									  octstr_get_cstr(line));
! 						 }
! 					 }
                  octstr_destroy(line);
              }
!         } while (delta > 0 || num_received < num_sent);
      }
  
  over:
***************
*** 394,397 ****
      
      return 0;
  }
- 
--- 403,405 ----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.