*/
struct Session;
+/**
+ * A connection handle
+ *
+ */
struct ConnectionHandle
{
+ /**
+ * The curl easy handle
+ */
CURL *easyhandle;
+
+ /**
+ * The related session
+ */
struct Session *s;
};
client_schedule (struct HTTP_Client_Plugin *plugin, int now);
+/**
+ * Connect a HTTP put connection
+ *
+ * @param s the session to connect
+ * @return GNUNET_SYSERR for hard failure, GNUNET_OK for success
+ */
static int
client_connect_put (struct Session *s);
break;
}
-#if VERBOSE_CURL
memcpy (text, data, size);
if (text[size - 1] == '\n')
text[size] = '\0';
"Connection %p %s: %s", ch->easyhandle, ttype, text);
#endif
}
-#endif
return 0;
}
/**
* Function setting up file descriptors and scheduling task to run
*
- * @param plugin plugin as closure
+ * @param plugin the plugin as closure
* @param now schedule task in 1ms, regardless of what curl may say
* @return GNUNET_SYSERR for hard failure, GNUNET_OK for ok
*/
return GNUNET_OK;
}
+/**
+ * Connect a HTTP put connection
+ *
+ * @param s the session to connect
+ * @return GNUNET_SYSERR for hard failure, GNUNET_OK for ok
+ */
static int
client_connect_put (struct Session *s)
{
*/
/**
+ * Total number of messages to send
+ *
* Note that this value must not significantly exceed
* 'MAX_PENDING' in 'gnunet-service-transport.c', otherwise
* messages may be dropped even for a reliable transport.
{
if (get_bit (bitmap, i) == 0)
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Did not receive message %d\n", i);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not receive message %d\n", i);
ok = -1;
}
}
static int
get_bit (const char *map, unsigned int bit)
{
- if (bit >= TOTAL_MSGS)
+ if (bit > TOTAL_MSGS)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "get bit %d of %d(!?!?)\n", bit,
sizeof (bitmap) * 8);
s = get_size (n);
GNUNET_assert (size >= s);
GNUNET_assert (buf != NULL);
- GNUNET_assert (n <= TOTAL_MSGS);
+ GNUNET_assert (n < TOTAL_MSGS);
cbuf = buf;
do
{
+ GNUNET_assert (n < TOTAL_MSGS);
hdr.header.size = htons (s);
hdr.header.type = htons (MTYPE);
hdr.num = htonl (n);
if (0 == GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 16))
break; /* sometimes pack buffer full, sometimes not */
}
- while (size - ret >= s);
+ while ((size - ret >= s) && (n < TOTAL_MSGS));
if (n < TOTAL_MSGS)
{
th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, &p1->id, s, 0,
sendtask ()
{
start_time = GNUNET_TIME_absolute_get ();
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Starting to send %u messages\n",
+ TOTAL_MSGS);
th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, &p1->id, get_size (0), 0,
TIMEOUT_TRANSMIT, ¬ify_ready,
NULL);