+/**
+ * Check if transmission is a payload packet.
+ *
+ * @param th Transmission handle.
+ *
+ * @return GNUNET_YES if it is a payload packet,
+ * GNUNET_NO if it is a mesh management packet.
+ */
+static int
+th_is_payload (struct GNUNET_MESH_TransmitHandle *th)
+{
+ return (th->notify != NULL) ? GNUNET_YES : GNUNET_NO;
+}
+
+
+/**
+ * Check whether there is any message ready in the queue and find the size.
+ *
+ * @param h Mesh handle.
+ *
+ * @return The size of the first ready message in the queue,
+ * 0 if there is none.
+ */
+static size_t
+message_ready_size (struct GNUNET_MESH_Handle *h)
+{
+ struct GNUNET_MESH_TransmitHandle *th;
+ struct GNUNET_MESH_Tunnel *t;
+
+ for (th = h->th_head; NULL != th; th = th->next)
+ {
+ t = th->tunnel;
+ if (GNUNET_NO == th_is_payload (th) ||
+ (t->max_pid > t->pid || PID_OVERFLOW (t->pid, t->max_pid)))
+ return th->size;
+ }
+ return 0;
+}
+
+