}
-
static void curl_handle_finished (struct Plugin *plugin)
{
struct Session *ps = NULL;
default:
break;
}
-
}
while ( (msgs_in_queue > 0) );
}
+
/**
* Task performing curl operations
* @param cls plugin as closure
* @param tc gnunet scheduler task context
*/
-
static void curl_perform (void *cls,
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct Plugin *plugin = cls;
static unsigned int handles_last_run;
int running;
-
CURLMcode mret;
GNUNET_assert(cls !=NULL);
plugin->http_curl_task = GNUNET_SCHEDULER_NO_TASK;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
- /*
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_STARTUP ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_STARTUP \n");
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_SHUTDOWN \n");
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_TIMEOUT \n");
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_READ_READY ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_READ_READY \n");
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_WRITE_READY \n");
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE ))
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"SCHEDULE DUE TO: GNUNET_SCHEDULER_REASON_PREREQ_DONE \n");
-
-
- if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_TIMEOUT))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,"TIMEOUT RESCHEDULE\n");
- curl_schedule(plugin);
- return;
- }
- */
do
{
int max;
struct GNUNET_NETWORK_FDSet *grs;
struct GNUNET_NETWORK_FDSet *gws;
- struct GNUNET_TIME_Relative tv;
- long curl_timeout;
+ long to;
CURLMcode mret;
GNUNET_assert(cls !=NULL);
GNUNET_SCHEDULER_cancel(plugin->env->sched, plugin->http_curl_task);
plugin->http_curl_task = GNUNET_SCHEDULER_NO_TASK;
}
-
max = -1;
FD_ZERO (&rs);
FD_ZERO (&ws);
FD_ZERO (&es);
-
mret = curl_multi_fdset (plugin->multi_handle, &rs, &ws, &es, &max);
if (mret != CURLM_OK)
{
curl_multi_strerror (mret));
return GNUNET_SYSERR;
}
- tv = GNUNET_TIME_UNIT_FOREVER_REL;
- mret = curl_multi_timeout (plugin->multi_handle, &curl_timeout);
+ mret = curl_multi_timeout (plugin->multi_handle, &to);
if (mret != CURLM_OK)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("%s failed at %s:%d: `%s'\n"),
- "curl_multi_timeout", __FILE__, __LINE__,
- curl_multi_strerror (mret));
- return GNUNET_SYSERR;
- }
- if (curl_timeout >= 0)
- {
- tv = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, curl_timeout);
- }
- if (curl_timeout >= -1)
- {
- tv = GNUNET_TIME_relative_get_zero();
- }
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("%s failed at %s:%d: `%s'\n"),
+ "curl_multi_timeout", __FILE__, __LINE__,
+ curl_multi_strerror (mret));
+ return GNUNET_SYSERR;
+ }
grs = GNUNET_NETWORK_fdset_create ();
gws = GNUNET_NETWORK_fdset_create ();
plugin->http_curl_task = GNUNET_SCHEDULER_add_select (plugin->env->sched,
GNUNET_SCHEDULER_PRIORITY_DEFAULT,
GNUNET_SCHEDULER_NO_TASK,
- tv,
+ GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 0),
grs,
gws,
&curl_perform,
return GNUNET_SYSERR;
}
}
- /* TEST CODE */
- GNUNET_SCHEDULER_add_now(plugin->env->sched, &curl_perform, plugin);
- /* TEST CODE */
-#if 0
if (curl_schedule (plugin) == GNUNET_SYSERR)
{
#if DEBUG_CONNECTIONS
}
#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Connection %X: inbound not connected, initiating connection\n",ps);
-#endif
#endif
}
}
}
}
-
- /* TEST CODE */
- GNUNET_SCHEDULER_add_now(plugin->env->sched, &curl_perform, plugin);
- /* TEST CODE */
-#if 0
if (curl_schedule (plugin) == GNUNET_SYSERR)
return GNUNET_SYSERR;
-#endif
return GNUNET_YES;
}
if (ps->direction == INBOUND)