keep addr
[oweals/gnunet.git] / src / util / client.c
index e9b3f985a57f4af0a531db4e970180871b9f25f9..02de2ec636d2ad70464372f27cedb2c509047213 100644 (file)
@@ -287,16 +287,22 @@ receive_task (void *scls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   cmsg = (const struct GNUNET_MessageHeader *) sock->received_buf;
   msize = ntohs (cmsg->size);
   GNUNET_assert (sock->received_pos >= msize);
-  msg = GNUNET_malloc (msize);
-  memcpy (msg, cmsg, msize);
-  memmove (sock->received_buf,
-           &sock->received_buf[msize], sock->received_pos - msize);
+  if (handler != NULL)
+    {
+      msg = GNUNET_malloc (msize);
+      memcpy (msg, cmsg, msize);
+      memmove (sock->received_buf,
+              &sock->received_buf[msize], sock->received_pos - msize);
+    }
   sock->received_pos -= msize;
   sock->msg_complete = GNUNET_NO;
   sock->receiver_handler = NULL;
   check_complete (sock);
-  handler (cls, msg);
-  GNUNET_free (msg);
+  if (handler != NULL)
+    {
+      handler (cls, msg);
+      GNUNET_free (msg);
+    }
 }