void
connect_to_service_dns (void *cls __attribute__((unused)),
const struct GNUNET_SCHEDULER_TaskContext *tc) {
+ conn_task = GNUNET_SCHEDULER_NO_TASK;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Connecting to service-dns\n");
{
GNUNET_CLIENT_notify_transmit_ready(dns_connection, sizeof(struct GNUNET_MessageHeader), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, &send_query, NULL);
}
+ conn_task = GNUNET_SCHEDULER_add_now (start_helper_and_schedule, NULL);
}
/**
{
GNUNET_CLIENT_disconnect(dns_connection, GNUNET_NO);
dns_connection = NULL;
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
- &connect_to_service_dns,
- NULL);
+ conn_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+ &connect_to_service_dns,
+ NULL);
return;
}
GNUNET_break (0);
GNUNET_CLIENT_disconnect(dns_connection, GNUNET_NO);
dns_connection = NULL;
- GNUNET_SCHEDULER_add_now (&connect_to_service_dns,
- NULL);
+ conn_task = GNUNET_SCHEDULER_add_now (&connect_to_service_dns,
+ NULL);
return;
}
void *pkt = GNUNET_malloc(ntohs(msg->size));
*/
extern struct answer_packet_list *answer_proc_tail;
+extern GNUNET_SCHEDULER_TaskIdentifier conn_task;
+
#endif /* end of include guard: GNUNET-DAEMON-VPN-DNS_H */
void
start_helper_and_schedule(void *cls,
const struct GNUNET_SCHEDULER_TaskContext *tc) {
+ shs_task = GNUNET_SCHEDULER_NO_TASK;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
*/
extern struct GNUNET_VPN_HELPER_Handle *helper_handle;
+extern GNUNET_SCHEDULER_TaskIdentifier shs_task;
+
/**
* Start the helper-process
*/
*/
static struct GNUNET_CONTAINER_MultiHashMap *udp_connections;
+GNUNET_SCHEDULER_TaskIdentifier conn_task;
+
+GNUNET_SCHEDULER_TaskIdentifier shs_task;
+
/**
* Function scheduled as very last function, cleans up after us
*{{{
GNUNET_MESH_disconnect(mesh_handle);
mesh_handle = NULL;
}
+ if (GNUNET_SCHEDULER_NO_TASK != shs_task)
+ {
+ GNUNET_SCHEDULER_cancel (shs_task);
+ shs_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+ if (GNUNET_SCHEDULER_NO_TASK != conn_task)
+ {
+ GNUNET_SCHEDULER_cancel (conn_task);
+ conn_task = GNUNET_SCHEDULER_NO_TASK;
+ }
}
/*}}}*/
GNUNET_CONFIGURATION_get_value_number (cfg, "vpn", "MAX_MAPPINGg",
&max_mappings);
udp_connections = GNUNET_CONTAINER_multihashmap_create(65536);
- GNUNET_SCHEDULER_TaskIdentifier conn_task = GNUNET_SCHEDULER_add_now (connect_to_service_dns, NULL);
- GNUNET_SCHEDULER_add_after (conn_task, start_helper_and_schedule, NULL);
+ conn_task = GNUNET_SCHEDULER_add_now (connect_to_service_dns, NULL);
+ shs_task = GNUNET_SCHEDULER_add_after (conn_task, start_helper_and_schedule, NULL);
GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_FOREVER_REL, &cleanup, cls);
}