diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index c7d0753..d1ac339 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
os->obj = obj;
os->driver->set_io_watch(os->object, handle_async_io, os);
return;
- } else
+ } else {
/* Standard data stream */
OBEX_ObjectAddHeader (obex, obj, OBEX_HDR_BODY,
hd, 0, OBEX_FL_STREAM_START);
+ /* Try to write to stream and suspend the stream immidiately
+ * if no data available to send. */
+ err = obex_write_stream(os, obex, obj);
+ if (err == -EAGAIN) {
+ OBEX_SuspendRequest(obex, obj);
+ os->obj = obj;
+ os->driver->set_io_watch(os->object, handle_async_io,
+ os);
+ return;
+ }
+ }
+
done:
os_set_response(obj, err);
}