/*
This file is part of GNUnet.
- Copyright (C) 2001-2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2001-2013 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
#include "platform.h"
#include "gnunet_protocols.h"
#include "gnunet_util_lib.h"
+#include "gnunet_socks.h"
/**
* If we are re-trying and are delaying to do so,
* handle to the scheduled task managing the delay.
*/
- struct GNUNET_SCHEDULER_Task * reconnect_task;
+ struct GNUNET_SCHEDULER_Task *reconnect_task;
/**
* Timeout for the operation overall.
char *hostname;
unsigned long long port;
+ /* Never use a local source if a proxy is configured */
+ if (GNUNET_YES == GNUNET_SOCKS_check_service (service_name,cfg))
+ return GNUNET_SOCKS_do_connect (service_name,cfg);
+
connection = NULL;
if (0 == (attempt % 2))
{
(unsigned int) available,
NULL == client->connection ? "NULL" : "non-NULL",
STRERROR (errCode));
+ /* remember failure */
+ client->in_receive = GNUNET_SYSERR;
if (NULL != (receive_handler = client->receiver_handler))
{
receive_handler_cls = client->receiver_handler_cls;
receive_handler (receive_handler_cls,
NULL);
}
- /* remember failure */
- client->in_receive = GNUNET_SYSERR;
return;
}
/* FIXME: optimize for common fast case where buf contains the
"Transmission failed %u times, trying again in %s.\n",
MAX_ATTEMPTS - th->attempts_left,
GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
+ GNUNET_assert (NULL == th->th);
GNUNET_assert (NULL == th->reconnect_task);
th->reconnect_task =
GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th);
GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
client->th = th;
GNUNET_assert (NULL == th->reconnect_task);
+ GNUNET_assert (NULL == th->th);
th->reconnect_task =
GNUNET_SCHEDULER_add_delayed (delay, &client_delayed_retry, th);
return 0;
client->th = th;
if (NULL == client->connection)
{
+ GNUNET_assert (NULL == th->th);
GNUNET_assert (NULL == th->reconnect_task);
th->reconnect_task =
GNUNET_SCHEDULER_add_delayed (client->back_off,