#define HTTPCLIENT_FA_AUTOKILL 0x00000002 /* sets the applet to destroy the httpclient struct itself */
/* status (FS) */
-#define HTTPCLIENT_FS_ENDED 0x00010000 /* the httpclient is stopped */
+#define HTTPCLIENT_FS_STARTED 0x00010000 /* the httpclient was started */
+#define HTTPCLIENT_FS_ENDED 0x00020000 /* the httpclient is stopped */
/* States of the HTTP Client Appctx */
enum {
task_wakeup(s->task, TASK_WOKEN_INIT);
hc->appctx = appctx;
+ hc->flags |= HTTPCLIENT_FS_STARTED;
appctx->ctx.httpclient.ptr = hc;
appctx->st0 = HTTPCLIENT_S_REQ;
void httpclient_stop_and_destroy(struct httpclient *hc)
{
- /* The httpclient was already stopped, we can safely destroy it */
- if (hc->flags & HTTPCLIENT_FS_ENDED) {
+ /* The httpclient was already stopped or never started, we can safely destroy it */
+ if (hc->flags & HTTPCLIENT_FS_ENDED || !(hc->flags & HTTPCLIENT_FS_STARTED)) {
httpclient_destroy(hc);
} else {
/* if the client wasn't stopped, ask for a stop and destroy */