*/
int in_receive;
+ /**
+ * Is this the first message we are sending to the service?
+ */
+ int first_message;
+
/**
* How often have we tried to connect?
*/
return NULL;
connection = do_connect (service_name, cfg, 0);
client = GNUNET_malloc (sizeof (struct GNUNET_CLIENT_Connection));
+ client->first_message = GNUNET_YES;
client->attempts = 1;
client->connection = connection;
client->service_name = GNUNET_strdup (service_name);
th->reconnect_task = GNUNET_SCHEDULER_NO_TASK;
th->client->connection =
do_connect (th->client->service_name, th->client->cfg, th->client->attempts++);
+ th->client->first_message = GNUNET_YES;
if (NULL == th->client->connection)
{
/* could happen if we're out of sockets */
th->client = client;
th->size = size;
th->timeout = GNUNET_TIME_relative_to_absolute (timeout);
- th->auto_retry = auto_retry;
+ /* always auto-retry on first message to service */
+ th->auto_retry = (GNUNET_YES == client->first_message) ? GNUNET_YES : auto_retry;
+ client->first_message = GNUNET_NO;
th->notify = notify;
th->notify_cls = notify_cls;
th->attempts_left = MAX_ATTEMPTS;