* Copyright 2016 IoT.bzh
* Author: José Bollo <jose.bollo@iot.bzh>
*
- * Inspired by the work of
- *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
.on_close = (void*)aws_on_close,
.on_text = (void*)aws_on_content,
.on_binary = (void*)aws_on_content,
- .on_continue = (void*)aws_on_content
+ .on_continue = (void*)aws_on_content,
+ .on_extension = NULL
};
struct afb_wsreq
result->tokener = json_tokener_new();
if (result->tokener == NULL)
- goto error2;
+ goto error3;
- result->ws = websock_create(&aws_itf, result);
+ result->ws = websock_create_v13(&aws_itf, result);
if (result->ws == NULL)
- goto error3;
+ goto error4;
result->up = upoll_open(result->fd, result);
if (result->up == NULL)
- goto error4;
+ goto error5;
upoll_on_readable(result->up, (void*)aws_on_readable);
upoll_on_hangup(result->up, (void*)aws_disconnect);
return result;
-error4:
+error5:
websock_destroy(result->ws);
-error3:
+error4:
json_tokener_free(result->tokener);
+error3:
+ ctxClientPut(result->context);
error2:
free(result);
error:
static int aws_handle_json(struct afb_websock *aws, struct json_object *obj)
{
struct afb_req r;
- int count, num, rc;
+ int count, num;
struct json_object *type, *id, *name, *req, *token;
struct afb_wsreq *wsreq;
const char *api, *verb;
r.data = wsreq;
r.itf = &wsreq_itf;
- rc = afb_apis_handle(r, aws->context, api, lenapi, verb, lenverb);
- if (rc == 0)
- wsreq_fail(wsreq, "ail", "api not found");
+ afb_apis_call(r, aws->context, api, lenapi, verb, lenverb);
return 1;
error:
}
}
-
static struct afb_arg wsreq_get(struct afb_wsreq *wsreq, const char *name)
{
struct afb_arg arg;
if (json_object_object_get_ex(wsreq->request, name, &value)) {
arg.name = name;
arg.value = json_object_get_string(value);
+ arg.size = strlen(arg.value);
} else {
arg.name = NULL;
arg.value = NULL;
+ arg.size = 0;
}
- arg.size = 0;
arg.path = NULL;
return arg;
}