#include "gnunet-service-dns-p.h"
#include "gnunet-vpn-packet.h"
#include "gnunet-vpn-checksum.h"
+#include "gnunet-helper-vpn-api.h"
struct GNUNET_VPN_HELPER_Handle *helper_handle;
GNUNET_CONTAINER_DLL_remove (answer_proc_head, answer_proc_tail, ans);
GNUNET_free(ans);
- /* FIXME */ GNUNET_DISK_file_write(helper_handle->fh_to_helper, pkt, pkt_len);
+ if (GNUNET_DISK_file_write(helper_handle->fh_to_helper, pkt, pkt_len) < 0)
+ {
+ cleanup_helper(helper_handle);
+ GNUNET_SCHEDULER_add_now(start_helper_and_schedule, NULL);
+ return;
+ }
/* if more packets are available, reschedule */
if (answer_proc_head != NULL)
return;
}
- /* FIXME */ GNUNET_SERVER_mst_receive (handle->mst, handle->client, buf, t,
- 0, 0);
+ if (GNUNET_SYSERR ==
+ GNUNET_SERVER_mst_receive (handle->mst, handle->client, buf, t, 0, 0))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "SYSERR from mst\n");
+ stop_helper (handle);
+
+ /* Restart the helper */
+ GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+ handle->restart_task, handle);
+ return;
+
+ }
GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
handle->fh_from_helper, &helper_read,