diff --git a/obexd/plugins/irmc.c b/obexd/plugins/irmc.c
index 0488cae..e1e83f9 100644
--- a/obexd/plugins/irmc.c
+++ b/obexd/plugins/irmc.c
"END:VCARD\r\n";
static void phonebook_size_result(const char *buffer, size_t bufsize,
- int vcards, int missed, void *user_data)
+ int vcards, int missed,
+ gboolean lastpart, void *user_data)
{
struct irmc_session *irmc = user_data;
}
static void query_result(const char *buffer, size_t bufsize, int vcards,
- int missed, void *user_data)
+ int missed, gboolean lastpart, void *user_data)
{
struct irmc_session *irmc = user_data;
const char *s, *t;
diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c
index 6579d09..5775eea 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
GString *buffer;
GByteArray *aparams;
gboolean firstpacket;
+ gboolean lastpart;
struct pbap_session *session;
void *request;
};
}
static void phonebook_size_result(const char *buffer, size_t bufsize,
- int vcards, int missed, void *user_data)
+ int vcards, int missed,
+ gboolean lastpart, void *user_data)
{
struct pbap_session *pbap = user_data;
uint16_t phonebooksize;
}
static void query_result(const char *buffer, size_t bufsize, int vcards,
- int missed, void *user_data)
+ int missed, gboolean lastpart, void *user_data)
{
struct pbap_session *pbap = user_data;
DBG("");
- if (pbap->obj->request) {
+ if (pbap->obj->request && lastpart) {
phonebook_req_finalize(pbap->obj->request);
pbap->obj->request = NULL;
}
+ pbap->obj->lastpart = lastpart;
+
if (vcards <= 0) {
obex_object_set_io_flags(pbap->obj, G_IO_ERR, -ENOENT);
return;
diff --git a/obexd/plugins/phonebook-dummy.c b/obexd/plugins/phonebook-dummy.c
index 60b7640..76dd550 100644
--- a/obexd/plugins/phonebook-dummy.c
+++ b/obexd/plugins/phonebook-dummy.c
closedir(dp);
done:
/* FIXME: Missing vCards fields filtering */
- dummy->cb(buffer->str, buffer->len, count, 0, dummy->user_data);
+ dummy->cb(buffer->str, buffer->len, count, 0, TRUE, dummy->user_data);
g_string_free(buffer, TRUE);
/* FIXME: Missing vCards fields filtering */
- dummy->cb(buffer, count, 1, 0, dummy->user_data);
+ dummy->cb(buffer, count, 1, 0, TRUE, dummy->user_data);
return FALSE;
}
diff --git a/obexd/plugins/phonebook-ebook.c b/obexd/plugins/phonebook-ebook.c
index 70b9c02..6cc4f31 100644
--- a/obexd/plugins/phonebook-ebook.c
+++ b/obexd/plugins/phonebook-ebook.c
done:
data->completed = TRUE;
- data->contacts_cb(string->str, string->len, count, 0, data->user_data);
+ data->contacts_cb(string->str, string->len, count, 0, TRUE,
+ data->user_data);
fail:
g_string_free(string, TRUE);
if (estatus != E_BOOK_ERROR_OK) {
error("E-Book query failed: status %d", estatus);
- data->contacts_cb(NULL, 0, 1, 0, data->user_data);
+ data->contacts_cb(NULL, 0, 1, 0, TRUE, data->user_data);
goto fail;
}
len = vcard ? strlen(vcard) : 0;
- data->contacts_cb(vcard, len, 1, 0, data->user_data);
+ data->contacts_cb(vcard, len, 1, 0, TRUE, data->user_data);
g_free(vcard);
diff --git a/obexd/plugins/phonebook-tracker.c b/obexd/plugins/phonebook-tracker.c
index 210799d..aea2365 100644
--- a/obexd/plugins/phonebook-tracker.c
+++ b/obexd/plugins/phonebook-tracker.c
struct phonebook_data *data = user_data;
if (num_fields < 0) {
- data->cb(NULL, 0, num_fields, 0, data->user_data);
+ data->cb(NULL, 0, num_fields, 0, TRUE, data->user_data);
return -EINTR;
}
return 0;
}
- data->cb(NULL, 0, data->index, data->newmissedcalls, data->user_data);
+ data->cb(NULL, 0, data->index, data->newmissedcalls, TRUE,
+ data->user_data);
return 0;
/*
static char *temp_id = NULL;
if (num_fields < 0) {
- data->cb(NULL, 0, num_fields, 0, data->user_data);
+ data->cb(NULL, 0, num_fields, 0, TRUE, data->user_data);
goto fail;
}
vcards = gen_vcards(data->contacts, params);
data->cb(vcards->str, vcards->len, g_slist_length(data->contacts),
- data->newmissedcalls, data->user_data);
+ data->newmissedcalls, TRUE, data->user_data);
g_string_free(vcards, TRUE);
fail:
data->contacts = NULL;
if (num_fields < 0) {
- data->cb(NULL, 0, num_fields, 0, data->user_data);
+ data->cb(NULL, 0, num_fields, 0, TRUE, data->user_data);
return -EINTR;
}
err = query_tracker(query, col_amount, pull_cb, data);
if (err < 0) {
- data->cb(NULL, 0, err, 0, data->user_data);
+ data->cb(NULL, 0, err, 0, TRUE, data->user_data);
return -EINTR;
}
diff --git a/obexd/plugins/phonebook.h b/obexd/plugins/phonebook.h
index bfbae0f..f6df164 100644
--- a/obexd/plugins/phonebook.h
+++ b/obexd/plugins/phonebook.h
* Contacts will be returned in the vcard format.
*/
typedef void (*phonebook_cb) (const char *buffer, size_t bufsize,
- int vcards, int missed, void *user_data);
+ int vcards, int missed, gboolean lastpart, void *user_data);
/*
* Interface between the PBAP core and backends to