diff --git a/obexd/plugins/phonebook-tracker.c b/obexd/plugins/phonebook-tracker.c
index c7c4e06..efa7e3f 100644
--- a/obexd/plugins/phonebook-tracker.c
+++ b/obexd/plugins/phonebook-tracker.c
phonebook_cb cb;
void *user_data;
int index;
+ const struct apparam_field *params;
};
struct cache_data {
static void pull_contacts(char **reply, int num_fields, void *user_data)
{
struct phonebook_data *data = user_data;
+ const struct apparam_field *params = data->params;
GString *vcards = data->vcards;
char *formatted;
+ int last_index;
if (reply == NULL)
goto done;
+ data->index++;
+
+ /* Just interested in knowing the phonebook size */
+ if (params->maxlistcount == 0)
+ return;
+
+ last_index = params->liststartoffset + params->maxlistcount;
+
+ if (data->index < params->liststartoffset || data->index > last_index)
+ return;
+
formatted = g_strdup_printf("%s;%s;%s;%s;%s", reply[1], reply[2],
reply[3], reply[4], reply[5]);
g_free(formatted);
- data->index++;
-
return;
done:
data = g_new0(struct phonebook_data, 1);
data->vcards = g_string_new(NULL);
+ data->params = params;
data->user_data = user_data;
data->cb = cb;
data = g_new0(struct phonebook_data, 1);
data->vcards = g_string_new(NULL);
data->user_data = user_data;
+ data->params = params;
data->cb = cb;
query = g_strdup_printf(CONTACTS_QUERY_FROM_URI, id, id, id, id, id);