diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c
index 997b5bd..fb82766 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
if (type == NULL)
return -EBADR;
- rsize = obex_aparam_read(os, obj, &buffer);
+ rsize = obex_get_apparam(os, &buffer);
if (rsize < 0) {
if (g_ascii_strcasecmp(type, VCARDENTRY_TYPE) != 0)
return -EBADR;
diff --git a/obexd/src/obex-priv.h b/obexd/src/obex-priv.h
index 01b6496..a834511 100644
--- a/obexd/src/obex-priv.h
+++ b/obexd/src/obex-priv.h
char *type;
char *path;
time_t time;
+ uint8_t *apparam;
+ size_t apparam_len;
uint8_t *buf;
int64_t pending;
int64_t offset;
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 70a0c68..a1621b9 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
g_free(os->path);
os->path = NULL;
}
+ if (os->apparam) {
+ g_free(os->apparam);
+ os->apparam = NULL;
+ os->apparam_len = 0;
+ }
os->object = NULL;
os->obj = NULL;
os->service->who_size);
break;
}
+
+ if (hi == OBEX_HDR_APPARAM) {
+ os->apparam = g_memdup(hd.bs, hlen);
+ os->apparam_len = hlen;
+ }
}
if (os->type == NULL)
return g_strdup_printf("%s+%d", address, channel);
}
-ssize_t obex_aparam_read(struct obex_session *os,
- obex_object_t *obj, const uint8_t **buffer)
+ssize_t obex_get_apparam(struct obex_session *os, const uint8_t **buffer)
{
- obex_headerdata_t hd;
- uint8_t hi;
- uint32_t hlen;
-
- OBEX_ObjectReParseHeaders(os->obex, obj);
-
- while (OBEX_ObjectGetNextHeader(os->obex, obj, &hi, &hd, &hlen)) {
- if (hi == OBEX_HDR_APPARAM) {
- *buffer = hd.bs;
- return hlen;
- }
- }
+ *buffer = os->apparam;
- return -EBADR;
+ return os->apparam_len;
}
int memncmp0(const void *a, size_t na, const void *b, size_t nb)
diff --git a/obexd/src/obex.h b/obexd/src/obex.h
index e3f399a..6ede0a4 100644
--- a/obexd/src/obex.h
+++ b/obexd/src/obex.h
const char *destination);
uint8_t obex_get_action_id(struct obex_session *os);
char *obex_get_id(struct obex_session *os);
-ssize_t obex_aparam_read(struct obex_session *os, obex_object_t *obj,
- const uint8_t **buffer);
+ssize_t obex_get_apparam(struct obex_session *os, const uint8_t **buffer);
/* Just a thin wrapper around memcmp to deal with NULL values */
int memncmp0(const void *a, size_t na, const void *b, size_t nb);