+ {
+ /* malformed message */
+ GNUNET_break (0);
+ GNUNET_PEERINFO_iterate_cancel (ic);
+ reconnect (h);
+ if (NULL != cb)
+ cb (cb_cls, NULL, NULL,
+ _("Received invalid message from `PEERINFO' service."));
+ return;
+ }
+ im = (const struct InfoMessage *) msg;
+ GNUNET_break (0 == ntohl (im->reserved));
+ if ( (GNUNET_YES == ic->have_peer) &&
+ (0 != memcmp (&ic->peer, &im->peer, sizeof (struct GNUNET_PeerIdentity))) )
+ {
+ /* bogus message (from a different iteration call?); out of sequence! */
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ "Received HELLO for peer `%s', expected peer `%s'\n",
+ GNUNET_i2s (&im->peer),
+ GNUNET_i2s (&ic->peer));
+
+ GNUNET_break (0);
+ GNUNET_PEERINFO_iterate_cancel (ic);
+ reconnect (h);
+ if (NULL != cb)
+ cb (cb_cls, NULL, NULL,
+ _("Received invalid message from `PEERINFO' service."));
+ return;
+ }
+ hello = NULL;
+ if (ms > sizeof (struct InfoMessage) + sizeof (struct GNUNET_MessageHeader))
+ {
+ hello = (const struct GNUNET_HELLO_Message *) &im[1];
+ if (ms != sizeof (struct InfoMessage) + GNUNET_HELLO_size (hello))