diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c
index 25d5e24..2085aca 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
pbap->cache.valid = TRUE;
id = cache_find(&pbap->cache, pbap->find_handle);
+ if (id == NULL) {
+ obex_object_set_io_flags(pbap, G_IO_ERR, -ENOENT);
+ return;
+ }
ret = phonebook_get_entry(pbap->folder, id, pbap->params,
query_result, pbap);
diff --git a/obexd/plugins/phonebook-tracker.c b/obexd/plugins/phonebook-tracker.c
index cfb350e..5b73fe6 100644
--- a/obexd/plugins/phonebook-tracker.c
+++ b/obexd/plugins/phonebook-tracker.c
query = name2query(name);
if (query == NULL)
- return -1;
+ return -ENOENT;
data = g_new0(struct phonebook_data, 1);
data->vcards = g_string_new(NULL);
query = folder2query(name);
if (query == NULL)
- return -1;
+ return -ENOENT;
cache = g_new0(struct cache_data, 1);
cache->entry_cb = entry_cb;
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 15a4674..a39a48d 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
case -EINVAL:
OBEX_ObjectSetRsp(os->obj, OBEX_RSP_BAD_REQUEST,
OBEX_RSP_BAD_REQUEST);
+ break;
case -EPERM:
OBEX_ObjectSetRsp(os->obj, OBEX_RSP_FORBIDDEN,
OBEX_RSP_FORBIDDEN);
break;
+ case -ENOENT:
+ OBEX_ObjectSetRsp(os->obj, OBEX_RSP_NOT_FOUND,
+ OBEX_RSP_NOT_FOUND);
+ break;
default:
if (ret < 0)
OBEX_ObjectSetRsp(os->obj,