From 6dd659c3cecfd75ccc58994d77b70a5a09d098cc Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sun, 31 Aug 2008 17:04:30 -0300 Subject: [PATCH] Return error if backend is not able to tell a feed from an entry --- src/backend.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend.c b/src/backend.c index 516738f..d71eb29 100644 --- a/src/backend.c +++ b/src/backend.c @@ -99,11 +99,20 @@ int atom_is_feed (AtomCtx *ctx, AtomID *id) { AtomBackend *backend; + AtomError *aerr; backend = atom_backend (ctx); if (backend && backend->is_feed) { return backend->is_feed (ctx, id); } + /* Frontend may make the decision of whether the requested resource is + * a feed or not. If it is not able to do so and backend isn't either, + * it is an error. + */ + aerr = atom_error_new (); + atom_error_code_set (aerr, 404); + atom_error_message_set (aerr, "Not Found"); + atom_error_set (ctx, aerr); return 0; } @@ -125,6 +134,7 @@ AtomResource * atom_retrieve_resource (AtomCtx *ctx, AtomID *id) { AtomResource *res; + res = NULL; if (atom_is_feed (ctx, id)) { AtomFeed *feed; @@ -134,7 +144,7 @@ atom_retrieve_resource (AtomCtx *ctx, AtomID *id) res = atom_resource_new_from_feed (feed); atom_feed_delete (feed); } - else + else if (atom_error_get (ctx) != NULL) { AtomEntry *entry; entry = atom_retrieve_entry (ctx, id); -- 2.20.1