summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--registration.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/registration.c b/registration.c
index 1693f09..3da97b8 100644
--- a/registration.c
+++ b/registration.c
@@ -1,10 +1,21 @@
#ifdef __EMSCRIPTEN__
+#include <stdlib.h>
#include <string.h>
#include <emscripten/fetch.h>
#else
#include <curl/curl.h>
#endif
+#ifdef __EMSCRIPTEN__
+
+static void cleanup(struct emscripten_fetch_t *fetch)
+{
+ free(fetch->userData);
+ emscripten_fetch_close(fetch);
+}
+
+#endif
+
void sign_up(const char *brand, const char *certificate)
{
#ifdef __EMSCRIPTEN__
@@ -12,8 +23,13 @@ void sign_up(const char *brand, const char *certificate)
emscripten_fetch_attr_init(&attr);
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
strcpy(attr.requestMethod, "POST");
- attr.requestData = brand;
- attr.requestDataSize = strlen(brand) + 1;
+ char *data = malloc(strlen(brand) + 1);
+ strcpy(data, brand);
+ attr.requestData = data;
+ attr.requestDataSize = strlen(data) + 1;
+ attr.userData = data;
+ attr.onsuccess = cleanup;
+ attr.onerror = cleanup;
emscripten_fetch(&attr, "register");
(void)certificate;
#else