{
uint8_t rsp;
- switch (err) {
- case 0:
- rsp = G_OBEX_RSP_SUCCESS;
- break;
- case -EPERM:
- case -EACCES:
- rsp = G_OBEX_RSP_FORBIDDEN;
- break;
- case -ENOENT:
- rsp = G_OBEX_RSP_NOT_FOUND;
- break;
- case -EBADR:
- rsp = G_OBEX_RSP_BAD_REQUEST;
- break;
- case -EFAULT:
- rsp = G_OBEX_RSP_SERVICE_UNAVAILABLE;
- break;
- case -EINVAL:
- rsp = G_OBEX_RSP_NOT_IMPLEMENTED;
- break;
- case -ENOTEMPTY:
- case -EEXIST:
- rsp = G_OBEX_RSP_PRECONDITION_FAILED;
- break;
- default:
- rsp = G_OBEX_RSP_INTERNAL_SERVER_ERROR;
- }
+ rsp = g_obex_errno_to_rsp(err);
print_event(-1, rsp);
return;
}
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_CONNECT;
-#endif
rsp = g_obex_packet_new(G_OBEX_RSP_SUCCESS, TRUE, G_OBEX_HDR_INVALID);
print_event(G_OBEX_OP_DISCONNECT, -1);
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_DISCONNECT;
-#endif
os_set_response(os, 0);
}
size);
if (os->aborted)
- return -EPERM;
+ return os->err < 0 ? os->err : -EPERM;
return driver_read(os, buf, size);
}
DBG("name=%s type=%s object=%p", os->name, os->type, os->object);
if (os->aborted)
- return -EPERM;
+ return os->err < 0 ? os->err : -EPERM;
if (os->object == NULL)
return -EIO;
return TRUE;
done:
- if (err < 0)
- os_set_response(os, err);
+ if (err < 0) {
+ os->err = err;
+ os->aborted = TRUE;
+ }
g_obex_resume(os->obex);
if (os->aborted)
return FALSE;
- /* workaround: client didn't send the object lenght */
+ /* workaround: client didn't send the object length */
if (os->size == OBJECT_SIZE_DELETE)
os->size = OBJECT_SIZE_UNKNOWN;
}
if (os->service->get == NULL) {
- os_set_response(os, -EINVAL);
+ os_set_response(os, -ENOSYS);
return;
}
if (!os->driver) {
error("No driver found");
- os_set_response(os, -EINVAL);
+ os_set_response(os, -ENOSYS);
return;
}
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_GET;
-#endif
parse_name(os, req);
}
if (os->service->setpath == NULL) {
- err = -EINVAL;
+ err = -ENOSYS;
goto done;
}
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_SETPATH;
-#endif
parse_name(os, req);
if (os->driver == NULL) {
error("No driver found");
- os_set_response(os, -EINVAL);
+ os_set_response(os, -ENOSYS);
return;
}
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_PUT;
-#endif
parse_name(os, req);
parse_length(os, req);
parse_time(os, req);
-#ifdef TIZEN_PATCH
parse_apparam(os, req);
-#endif
if (!os->checked) {
if (!check_put(obex, req, user_data))
}
if (os->service->put == NULL) {
- os_set_response(os, -EINVAL);
+ os_set_response(os, -ENOSYS);
return;
}
}
if (os->service->action == NULL) {
- err = -EINVAL;
+ err = -ENOSYS;
goto done;
}
-#ifdef TIZEN_PATCH
os->cmd = G_OBEX_OP_ACTION;
-#endif
parse_name(os, req);
parse_destname(os, req);
os->service->who,
os->service->who_size);
if (os->driver == NULL) {
- err = -EINVAL;
+ err = -ENOSYS;
goto done;
}
}
int obex_session_start(GIOChannel *io, uint16_t tx_mtu, uint16_t rx_mtu,
- struct obex_server *server)
+ gboolean stream, struct obex_server *server)
{
struct obex_session *os;
GObex *obex;
+ GObexTransportType type;
static uint32_t id = 0;
DBG("");
os->server = server;
os->size = OBJECT_SIZE_DELETE;
- obex = g_obex_new(io, G_OBEX_TRANSPORT_STREAM, rx_mtu, tx_mtu);
+ type = stream ? G_OBEX_TRANSPORT_STREAM : G_OBEX_TRANSPORT_PACKET;
+
+ obex = g_obex_new(io, type, rx_mtu, tx_mtu);
if (!obex) {
obex_session_free(os);
return -EIO;
int obex_remove(struct obex_session *os, const char *path)
{
if (os->driver == NULL)
- return -EINVAL;
+ return -ENOSYS;
return os->driver->remove(path);
}
const char *destination)
{
if (os->driver == NULL || os->driver->copy == NULL)
- return -EINVAL;
+ return -ENOSYS;
DBG("%s %s", source, destination);
const char *destination)
{
if (os->driver == NULL || os->driver->move == NULL)
- return -EINVAL;
+ return -ENOSYS;
DBG("%s %s", source, destination);