diff --git a/obexd/src/obex-priv.h b/obexd/src/obex-priv.h
index 0806a56..0caa0dd 100644
--- a/obexd/src/obex-priv.h
+++ b/obexd/src/obex-priv.h
obex_t *obex;
obex_object_t *obj;
struct obex_mime_type_driver *driver;
- gboolean finished;
};
int obex_session_start(GIOChannel *io, uint16_t tx_mtu, uint16_t rx_mtu,
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 643b942..e6585ca 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
os->pending = 0;
os->offset = 0;
os->size = OBJECT_SIZE_DELETE;
- os->finished = 0;
}
static void obex_session_free(struct obex_session *os)
obex_t *obex, obex_object_t *obj)
{
obex_headerdata_t hd;
- uint8_t *ptr;
ssize_t len;
unsigned int flags;
uint8_t hi;
if (os->aborted)
return -EPERM;
- if (os->object == NULL) {
- if (os->buf == NULL && os->finished == FALSE)
- return -EIO;
-
- len = MIN(os->size - os->offset, os->tx_mtu);
- ptr = os->buf + os->offset;
- goto add_header;
- }
+ if (os->object == NULL)
+ return -EIO;
len = os->driver->read(os->object, os->buf, os->tx_mtu, &hi);
if (len < 0) {
return len;
}
- ptr = os->buf;
-
-add_header:
-
- hd.bs = ptr;
+ hd.bs = os->buf;
switch (hi) {
case OBEX_HDR_BODY:
os->buf = NULL;
}
- os->offset += len;
-
return 0;
}