summaryrefslogtreecommitdiff
path: root/event-httpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'event-httpd.c')
-rw-r--r--event-httpd.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/event-httpd.c b/event-httpd.c
index 1492fe4..27590dd 100644
--- a/event-httpd.c
+++ b/event-httpd.c
@@ -83,8 +83,8 @@ static void finish(GObject *source, GAsyncResult *res, gpointer user_data)
g_data_input_stream_read_line_finish(c->data, res, &len, &error);
- if (c->resource->close) {
- c->resource->close(c, c->resource);
+ if (c->resource->ops->close) {
+ c->resource->ops->close(c, c->resource);
c->resource = NULL;
}
@@ -106,7 +106,7 @@ static void update(GObject *source, GAsyncResult *res, gpointer user_data)
return;
}
- c->resource->update(c, c->resource, line);
+ c->resource->ops->update(c, c->resource, line);
g_free(line);
@@ -227,17 +227,22 @@ static void receive(GObject *source, GAsyncResult *res, gpointer user_data)
}
c->resource = resource;
+ if (!resource->ops) {
+ respond_error(c, 204, "No Content");
+ close_client(c);
+ return;
+ }
// We have a valid resource, start the response
switch (method) {
case GET:
- if (!resource->get) {
+ if (!resource->ops->get) {
respond_error(c, 204, "No Content");
close_client(c);
return;
}
- if (resource->get(c, resource)) {
+ if (resource->ops->get(c, resource)) {
g_data_input_stream_read_line_async(c->data, 0, NULL,
finish, c);
} else {
@@ -246,7 +251,7 @@ static void receive(GObject *source, GAsyncResult *res, gpointer user_data)
break;
case UPDATE:
- if (!resource->update) {
+ if (!resource->ops->update) {
respond_error(c, 204, "No Content");
close_client(c);
return;