diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index a608ca3..82803ee 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
ret = obex_read_stream(os, os->obex, os->obj);
proceed:
- switch (ret) {
- case -EINVAL:
- OBEX_ObjectSetRsp(os->obj, OBEX_RSP_BAD_REQUEST,
- OBEX_RSP_BAD_REQUEST);
- break;
- case -EPERM:
- OBEX_ObjectSetRsp(os->obj, OBEX_RSP_FORBIDDEN,
- OBEX_RSP_FORBIDDEN);
- break;
- case -ENOENT:
- OBEX_ObjectSetRsp(os->obj, OBEX_RSP_NOT_FOUND,
- OBEX_RSP_NOT_FOUND);
- break;
- default:
- if (ret < 0)
- OBEX_ObjectSetRsp(os->obj,
- OBEX_RSP_INTERNAL_SERVER_ERROR,
- OBEX_RSP_INTERNAL_SERVER_ERROR);
- break;
- }
+ if (ret < 0)
+ os_set_response(os->obj, ret);
OBEX_ResumeRequest(os->obex);
int evt, int cmd, int rsp)
{
struct obex_session *os;
+ int err;
obex_debug(evt, cmd, rsp);
}
break;
case OBEX_EV_STREAMAVAIL:
- switch (obex_read_stream(os, obex, obj)) {
- case 0:
- break;
- case -EPERM:
- OBEX_ObjectSetRsp(obj,
- OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN);
- break;
- case -EAGAIN:
+ err = obex_read_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);
- break;
- default:
- OBEX_ObjectSetRsp(obj,
- OBEX_RSP_INTERNAL_SERVER_ERROR,
- OBEX_RSP_INTERNAL_SERVER_ERROR);
- break;
- }
+ } else if (err < 0)
+ os_set_response(obj, err);
break;
case OBEX_EV_STREAMEMPTY:
- switch (obex_write_stream(os, obex, obj)) {
- case -EPERM:
- OBEX_ObjectSetRsp(obj, OBEX_RSP_FORBIDDEN,
- OBEX_RSP_FORBIDDEN);
- break;
- case -EAGAIN:
+ 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);
- break;
- default:
- break;
- }
+ } else if (err < 0)
+ os_set_response(obj, err);
break;
case OBEX_EV_LINKERR:
struct obex_session *os;
obex_t *obex = user_data;
+ DBG("");
+
os = OBEX_GetUserData(obex);
if (os->service && os->service->disconnect)