Code Review
/
src
/
app-framework-binder.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
typo
[src/app-framework-binder.git]
/
src
/
afb-websock.c
diff --git
a/src/afb-websock.c
b/src/afb-websock.c
index
cff995f
..
885b986
100644
(file)
--- a/
src/afb-websock.c
+++ b/
src/afb-websock.c
@@
-2,8
+2,6
@@
* Copyright 2016 IoT.bzh
* Author: José Bollo <jose.bollo@iot.bzh>
*
* 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
* 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
@@
-30,8
+28,6
@@
#include "websock.h"
#include "websock.h"
-#include "local-def.h"
-
#include "afb-req-itf.h"
#include "afb-method.h"
#include "afb-hreq.h"
#include "afb-req-itf.h"
#include "afb-method.h"
#include "afb-hreq.h"
@@
-172,7
+168,8
@@
static struct websock_itf aws_itf = {
.on_close = (void*)aws_on_close,
.on_text = (void*)aws_on_content,
.on_binary = (void*)aws_on_content,
.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
};
struct afb_wsreq
@@
-237,23
+234,25
@@
struct afb_websock *afb_websock_create(struct afb_hreq *hreq)
result->tokener = json_tokener_new();
if (result->tokener == NULL)
result->tokener = json_tokener_new();
if (result->tokener == NULL)
- goto error
2
;
+ goto error
3
;
- result->ws = websock_create(&aws_itf, result);
+ result->ws = websock_create
_v13
(&aws_itf, result);
if (result->ws == NULL)
if (result->ws == NULL)
- goto error
3
;
+ goto error
4
;
result->up = upoll_open(result->fd, result);
if (result->up == NULL)
result->up = upoll_open(result->fd, result);
if (result->up == NULL)
- goto error
4
;
+ goto error
5
;
upoll_on_readable(result->up, (void*)aws_on_readable);
upoll_on_hangup(result->up, (void*)aws_disconnect);
return result;
upoll_on_readable(result->up, (void*)aws_on_readable);
upoll_on_hangup(result->up, (void*)aws_disconnect);
return result;
-error
4
:
+error
5
:
websock_destroy(result->ws);
websock_destroy(result->ws);
-error
3
:
+error
4
:
json_tokener_free(result->tokener);
json_tokener_free(result->tokener);
+error3:
+ ctxClientPut(result->context);
error2:
free(result);
error:
error2:
free(result);
error:
@@
-303,7
+302,7
@@
static void aws_on_readable(struct afb_websock *ws)
static int aws_handle_json(struct afb_websock *aws, struct json_object *obj)
{
struct afb_req r;
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;
struct json_object *type, *id, *name, *req, *token;
struct afb_wsreq *wsreq;
const char *api, *verb;
@@
-369,9
+368,7
@@
static int aws_handle_json(struct afb_websock *aws, struct json_object *obj)
r.data = wsreq;
r.itf = &wsreq_itf;
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:
return 1;
error:
@@
-407,7
+404,6
@@
static void aws_on_content(struct afb_websock *ws, int last, size_t size)
}
}
}
}
-
static struct afb_arg wsreq_get(struct afb_wsreq *wsreq, const char *name)
{
struct afb_arg arg;
static struct afb_arg wsreq_get(struct afb_wsreq *wsreq, const char *name)
{
struct afb_arg arg;
@@
-416,12
+412,13
@@
static struct afb_arg wsreq_get(struct afb_wsreq *wsreq, const char *name)
if (json_object_object_get_ex(wsreq->request, name, &value)) {
arg.name = name;
arg.value = json_object_get_string(value);
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;
} else {
arg.name = NULL;
arg.value = NULL;
+ arg.size = 0;
}
}
- arg.size = 0;
- arg.is_file = 0;
+ arg.path = NULL;
return arg;
}
return arg;
}
@@
-432,7
+429,7
@@
static void wsreq_iterate(struct afb_wsreq *wsreq, int (*iterator)(void *closure
struct json_object_iterator end = json_object_iter_end(wsreq->request);
arg.size = 0;
struct json_object_iterator end = json_object_iter_end(wsreq->request);
arg.size = 0;
- arg.
is_file = 0
;
+ arg.
path = NULL
;
while(!json_object_iter_equal(&it, &end)) {
arg.name = json_object_iter_peek_name(&it);
arg.value = json_object_get_string(json_object_iter_peek_value(&it));
while(!json_object_iter_equal(&it, &end)) {
arg.name = json_object_iter_peek_name(&it);
arg.value = json_object_get_string(json_object_iter_peek_value(&it));