gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r31793 - gnunet/src/psyc


From: gnunet
Subject: [GNUnet-SVN] r31793 - gnunet/src/psyc
Date: Mon, 6 Jan 2014 01:09:45 +0100

Author: tg
Date: 2014-01-06 01:09:45 +0100 (Mon, 06 Jan 2014)
New Revision: 31793

Modified:
   gnunet/src/psyc/psyc_api.c
Log:
psyc: message handler checks

Modified: gnunet/src/psyc/psyc_api.c
===================================================================
--- gnunet/src/psyc/psyc_api.c  2014-01-06 00:09:43 UTC (rev 31792)
+++ gnunet/src/psyc/psyc_api.c  2014-01-06 00:09:45 UTC (rev 31793)
@@ -310,8 +310,6 @@
 static void
 recv_error (struct GNUNET_PSYC_Channel *ch)
 {
-  recv_reset (ch);
-
   GNUNET_PSYC_MessageCallback message_cb
     = ch->recv_flags & GNUNET_PSYC_MESSAGE_HISTORIC
     ? ch->hist_message_cb
@@ -319,6 +317,8 @@
 
   if (NULL != message_cb)
     message_cb (ch->cb_cls, ch->recv_message_id, ch->recv_flags, NULL);
+
+  recv_reset (ch);
 }
 
 
@@ -577,6 +577,7 @@
          GNUNET_ntohll (msg->message_id), ch->recv_message_id);
     GNUNET_break_op (0);
     recv_error (ch);
+    return;
   }
   else if (ntohl (msg->flags) != ch->recv_flags)
   {
@@ -585,6 +586,7 @@
          ntohl (msg->flags), ch->recv_flags);
     GNUNET_break_op (0);
     recv_error (ch);
+    return;
   }
 
   uint16_t pos = 0, psize = 0, ptype, size_eq, size_min;
@@ -606,7 +608,8 @@
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                   "Discarding message of type %u with invalid size %u.\n",
                   ptype, psize);
-      break;
+      recv_error (ch);
+      return;
     }
 
     switch (ptype)
@@ -625,13 +628,17 @@
     case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_CANCEL:
       size_eq = sizeof (struct GNUNET_MessageHeader);
       break;
+    default:
+      GNUNET_break_op (0);
+      recv_error (ch);
+      return;
     }
 
     if (! ((0 < size_eq && psize == size_eq)
            || (0 < size_min && size_min <= psize)))
     {
-      GNUNET_break (0);
-      reschedule_connect (ch);
+      GNUNET_break_op (0);
+      recv_error (ch);
       return;
     }
 
@@ -693,6 +700,7 @@
       {
         LOG (GNUNET_ERROR_TYPE_WARNING, "Discarding malformed modifier.\n");
         GNUNET_break_op (0);
+        recv_error (ch);
         return;
       }
       ch->recv_state = MSG_STATE_MODIFIER;
@@ -709,7 +717,7 @@
         LOG (GNUNET_ERROR_TYPE_WARNING,
              "Discarding out of order message modifier continuation.\n");
         GNUNET_break_op (0);
-        recv_reset (ch);
+        recv_error (ch);
         return;
       }
       break;
@@ -722,7 +730,7 @@
         LOG (GNUNET_ERROR_TYPE_WARNING,
              "Discarding out of order message data fragment.\n");
         GNUNET_break_op (0);
-        recv_reset (ch);
+        recv_error (ch);
         return;
       }
       ch->recv_state = MSG_STATE_DATA;
@@ -792,13 +800,15 @@
   case GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_ACK:
     size_eq = sizeof (struct GNUNET_MessageHeader);
     break;
+  default:
+    GNUNET_break_op (0);
+    return;
   }
 
   if (! ((0 < size_eq && size == size_eq)
          || (0 < size_min && size_min <= size)))
   {
-    GNUNET_break (0);
-    reschedule_connect (ch);
+    GNUNET_break_op (0);
     return;
   }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]