Commit Graph

1199 Commits

Author SHA1 Message Date
Christian Fetzer
e859c03231 obexd: Add PushMessage
Push message has been implemented similar to send file (OPP),
the message to send (in bMessage format) is read from a file.
2013-02-07 13:49:00 +02:00
Christian Fetzer
970333272c obexd: Add parameter Status to GetMessageListing response
The parameter Status indicates the status of reception of the message.
It can be used to differentiate between messages with a reception status
of "completed", "fractioned" and "notification".

This parameter got lost when obexd was refactored to use of D-Bus properties.
The documentation and the parsing code for it was still there.
2013-01-18 13:58:50 +02:00
Christian Fetzer
41d1d89cf5 obexd: Add parameter AttachmentSize to GetMessageListing response
The parameter AttachmentSize indicates if the message contains
any attachment and their overall size (in bytes).
2013-01-18 13:58:50 +02:00
Christian Fetzer
ff52e50288 obexd: Add parameter Text to GetMessageListing response
The Text flag indicates if the message contains any textual content
or has binary content only.
2013-01-18 13:58:49 +02:00
Christian Fetzer
cb4a4de99c obexd: Move parse_size function in map.c
This reorders msg_parsers and moves the function parse_size
to match the order in the MAP specification.
2013-01-18 13:58:49 +02:00
Christian Fetzer
f9998e750f obexd: Add parameter SubjectLength to map_list_messages
This parameter allows the client to request a maximum length of the
parameter "subject" in the messages listing.
2013-01-18 13:58:42 +02:00
Christian Fetzer
363e55779d obexd: Remove transferred file only if the GET operation failed
Since 9606375649 xfer_complete() sets the
transfer status rather than the size. Adapt obc_transfer_free to check
for the completed status to avoid deletion of completed transfers.
2013-01-14 17:42:06 +02:00
Christian Fetzer
86de586204 obexd: Change behavior of parse_filter_read
Calls to ListMessages with filter 'Read' set to true should
request the MSE to send read messages only.

The old code requests the MSE to send unread messages only.
This behavior is not matching the other filters.
2013-01-14 17:42:05 +02:00
Christian Fetzer
d0b4698c8f obexd: Use defines for values in parse_filter_read parse_filter_priority 2013-01-14 17:42:05 +02:00
Christian Fetzer
499d0a4eaf obexd: Fix segfault in parse_filter_read and parse_filter_priority
Calls to ListMessages with filter 'Read' or 'Priority' caused a segfault
in parse_filter_read / parse_filter_priority. The functions read
D-Bus boolean values (uint32) into uint8.

0  0x00007ffff730332d in ?? () from /usr/lib/libdbus-1.so.3
1  0x00007ffff7304219 in dbus_message_iter_next () from /usr/lib/libdbus-1.so.3
2  0x000000000043ef0f in parse_message_filters (
    apparam=<error reading variable: Cannot access memory at address 0x7ffffeffff08>,
    iter=<error reading variable: Cannot access memory at address 0x7ffffeffff00>)
    at obexd/client/map.c:1246
2013-01-14 17:42:05 +02:00
Christian Fetzer
90322684e0 obexd: Fix FILTER_ALL in MAP client to set 16 bit
The MAP specification defines ParameterMask as a bitmask of 32 bit / 4 bytes.
For the lower 16 bit the specification defines parameters, the higher 16 bit
remain reserved for future use. Therefore FILTER_ALL is set to 0x0000FFFF.
(Reserved bits have to be set to 0)

In addition this fixes the issue that ListFilterFields didn't show all fields.
2013-01-14 17:42:04 +02:00
Christian Fetzer
a1d1ea32df obexd: Fix infinite loop in ListMessages with filter "Types"
Calls to ListMessages with filter 'Types' make obexd hang in an infinite loop.
This is caused by a missing dbus_message_iter_next in parse_filter_type.

0  0x00007ffff7304ca7 in dbus_message_iter_get_basic ()
   from /usr/lib/libdbus-1.so.3
1  0x0000000000434fba in parse_filter_type (iter=0x7fffffffd7d0, apparam=
    0x6987f0) at obexd/client/map.c:1086
2  parse_message_filters (iter=0x7fffffffd730, apparam=0x6987f0)
    at obexd/client/map.c:1222
3  map_list_messages (connection=<optimized out>, message=0x669ae0, user_data=
    0x698a60) at obexd/client/map.c:1273
4  0x00000000004109a1 in process_message (connection=0x662b20,
    message=<optimized out>, iface_user_data=<optimized out>,
    method=<optimized out>, method=<optimized out>) at gdbus/object.c:285
5  0x00007ffff7308e15 in ?? () from /usr/lib/libdbus-1.so.3
6  0x00007ffff72fb070 in dbus_connection_dispatch ()
   from /usr/lib/libdbus-1.so.3
7  0x000000000040e3d8 in message_dispatch (data=0x662b20)
    at gdbus/mainloop.c:76
8  0x00007ffff703d3cb in ?? () from /usr/lib/libglib-2.0.so.0
9  0x00007ffff703c845 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
10 0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
11 0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
12 0x000000000040df82 in main (argc=1, argv=0x7fffffffdd88)
    at obexd/src/main.c:323
2013-01-14 17:42:04 +02:00
Christian Fetzer
0b6a5b5068 obexd: Add property exist functions to map client
This fixes crashes in MAP client when the server does not send optional properties.

0  0x00007ffff6a792c5 in raise () from /usr/lib/libc.so.6
1  0x00007ffff6a7a748 in abort () from /usr/lib/libc.so.6
2  0x00007ffff731c145 in ?? () from /usr/lib/libdbus-1.so.3
3  0x00007ffff7312a25 in ?? () from /usr/lib/libdbus-1.so.3
4  0x00007ffff73050d6 in dbus_message_iter_append_basic () from /usr/lib/libdbus-1.so.3
5  0x0000000000433cc5 in get_replyto (property=<optimized out>, iter=<optimized out>,
    data=<optimized out>) at obexd/client/map.c:484
6  0x00000000004103b6 in append_property (p=p@entry=0x6594c0 <map_msg_properties+192>,
    dict=dict@entry=0x7fffffffd8e0, iface=0x6a3720) at gdbus/object.c:547
7  0x0000000000410472 in append_properties (data=data@entry=0x6a3720, iter=iter@entry=
    0x7fffffffd960) at gdbus/object.c:576
8  0x00000000004104d1 in append_interface (data=0x6a3720, user_data=0x7fffffffda40)
    at gdbus/object.c:591
9  0x00007ffff7058a4d in g_slist_foreach () from /usr/lib/libglib-2.0.so.0
10 0x0000000000411d05 in emit_interfaces_added (data=0x6a2ff0) at gdbus/object.c:623
11 process_changes (user_data=0x6a2ff0) at gdbus/object.c:1006
12 0x00007ffff703c845 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
13 0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
14 0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
15 0x000000000040df82 in main (argc=1, argv=0x7fffffffdd88) at obexd/src/main.c:323
2013-01-14 17:42:04 +02:00
Christian Fetzer
5e358f18b1 obexd: Handle empty path name in SetPath
If the empty path is given, an empty name should be sent via OBEX.
Currently the name field is not set at all and later checks which
depend on data->index will access invalid memory regions as g_strsplit
returns NULL when an empty string is given.

0  0x000000000041a181 in g_obex_setpath (obex=obex@entry=0x662eb0, path=
    0x20 <Address 0x20 out of bounds>, func=func@entry=0x42d300 <setpath_cb>,
    user_data=user_data@entry=0x668f10, err=err@entry=0x7fffffffda08)
    at gobex/gobex.c:1397
1  0x000000000042d395 in setpath_cb (obex=0x662eb0, err=0x0, rsp=<optimized out>,
    user_data=0x668f10) at obexd/client/session.c:902
2  0x0000000000418e54 in handle_response (obex=obex@entry=0x662eb0, err=err@entry=0x0,
    rsp=rsp@entry=0x668f40) at gobex/gobex.c:948
3  0x0000000000419d7a in incoming_data (io=<optimized out>, cond=<optimized out>,
    user_data=0x662eb0) at gobex/gobex.c:1191
4  0x00007ffff703c845 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
5  0x00007ffff703cb78 in ?? () from /usr/lib/libglib-2.0.so.0
6  0x00007ffff703cf72 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
7  0x000000000040def2 in main (argc=1, argv=0x7fffffffdd88) at obexd/src/main.c:323
2013-01-14 17:42:03 +02:00
Marcel Holtmann
9472de3087 obexd: Don't bother with trying to handle SIGPIPE 2013-01-11 09:45:40 -08:00
Marcel Holtmann
86cd7d0886 obexd: Fix includes for uuid.h 2013-01-09 20:30:43 -08:00
Marcel Holtmann
c59ae99e67 obexd: Remove the total silly usage of gchar and replace it with char 2013-01-04 12:27:55 -08:00
Marcin Zawiejski
6a8cb20ef5 obexd: Fix crash while removing session
Crash occurs when removing a session with RemoveSession while another
session has been created but not yet registered.

Backtrace:
0  __strcmp_ssse3 () at ../sysdeps/i386/i686/multiarch/strcmp-ssse3.S:233
1  0xb758e7c3 in g_str_equal () from /lib/i386-linux-gnu/libglib-2.0.so.0
2  0x08073e56 in find_session (path=0x85c8504 "/org/bluez/obex/session0") at obexd/client/manager.c:146
3  remove_session (connection=0x85bc5e0, message=0x85bca98, user_data=0x0) at obexd/client/manager.c:216
4  0x08055f6f in process_message (connection=0x85bc5e0, message=<optimized out>, iface_user_data=0x0,
    method=<optimized out>, method=<optimized out>) at gdbus/object.c:285
5  0xb7672666 in ?? () from /lib/i386-linux-gnu/libdbus-1.so.3
6  0xb76624d7 in dbus_connection_dispatch () from /lib/i386-linux-gnu/libdbus-1.so.3
7  0x080532f8 in message_dispatch (data=0x85bc5e0) at gdbus/mainloop.c:76
8  0xb759f6bf in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
9  0xb759e9e3 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
10 0xb759ed80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
11 0xb759f1db in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
12 0x08052d74 in main (argc=1, argv=0xbfb344e4) at obexd/src/main.c:323
2013-01-02 16:13:13 +02:00
Marcel Holtmann
651090b3e5 obexd: The function g_dbus_pending_property_error has no return value 2012-12-29 21:24:26 -08:00
Cristian Rodríguez
2e772c22ef obexd: Fix missing config.h includes 2012-12-23 18:59:25 -08:00
Marcel Holtmann
9ba1d688bf obexd: Move __terminated into signal handler 2012-12-23 10:16:53 -08:00
Johan Hedberg
4794363f19 obexd: Update string enumeration values to lower case 2012-12-22 18:30:05 +02:00
Anderson Lizardo
ec25822178 obexd: Simplify org.bluez.Error.InvalidArguments handling
Use a helper function to void code duplication.
2012-12-22 00:15:45 +02:00
Luiz Augusto von Dentz
fdb28673f4 obexd: Fix crash while attempting to authorize transfer
Transfer need to be registered before it is authorized because
AuthorizePush takes the transfer path and the agent may try to access
the transfer properties to figure out its details.
2012-12-21 23:26:13 +02:00
Johan Hedberg
c3f7df1042 obexd: Update Authorize call to AuthorizePush API 2012-12-21 22:20:10 +02:00
Johan Hedberg
cbf8891907 obexd: Implement Session transfer property 2012-12-21 22:03:45 +02:00
Johan Hedberg
59efeba8cb obexd: Fix session path generation in manager_unregister_session 2012-12-21 22:00:01 +02:00
Johan Hedberg
ee699dbc6a obexd: Implement Time transfer property 2012-12-21 21:53:14 +02:00
Johan Hedberg
2837514fc7 obexd: Implement Type transfer property 2012-12-21 21:42:41 +02:00
Marcel Holtmann
c72af721b9 obexd: Add a few more debug statements 2012-12-21 18:56:50 +01:00
Marcel Holtmann
0c388f5a77 obexd: There is only one daemon 2012-12-21 17:55:39 +01:00
Luiz Augusto von Dentz
405afea4a5 obexd: Add Session property to Transfer interface
This property indicates the session object path.
2012-12-21 17:06:10 +02:00
Luiz Augusto von Dentz
432dffc3d2 obexd: Remove unused code
obc_transfer_append_dbus_properties as the code now uses
g_dbus_get_properties to append transfer properties.
2012-12-21 17:06:10 +02:00
Luiz Augusto von Dentz
da068075ce obexd: Rename Progress property to Transferred 2012-12-21 14:53:42 +02:00
Luiz Augusto von Dentz
793f73091a obexd: Use term active instead of in-progress for transfer status 2012-12-21 12:47:06 +02:00
Luiz Augusto von Dentz
9606375649 obex-client: Rename org.bluez.obex.Transfer to Transfer1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon, in addition remove obex-client-api.txt and align with
Transfer1 API in use by the server.
2012-12-21 12:04:10 +02:00
Luiz Augusto von Dentz
57a12b2571 obex-client: Rename org.bluez.obex.MessageAccess to MessageAccess1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon, in addition do the same to org.bluez.obex.Message.
2012-12-21 12:04:09 +02:00
Luiz Augusto von Dentz
939cebb9f3 obex-client: Rename org.bluez.obex.Synchronization to Synchronization1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 12:01:07 +02:00
Luiz Augusto von Dentz
fc09df3af5 obex-client: Rename org.bluez.obex.PhonebookAccess to PhonebookAccess1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
2dcb0e5616 obex-client: Rename org.bluez.obex.FileTransfer to org.bluez.obex.FileTransfer1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
1945cffc16 obex-client: Rename org.bluez.obex.ObjectPush to org.bluez.obex.ObjectPush1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
dc30b0deaa obex-client: Rename org.bluez.obex.Session to org.bluez.obex.Session1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
35990b8bdd obexd: Rename org.bluez.obex.Client to org.bluez.obex.Client1
Rename the interface and move it to obexd-api.txt since it now belongs
to the same daemon.
2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
0cac99fe83 obexd: Define base path so in future it is easier to change it 2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
a5c2b6e886 obexd: Align client and server spec of org.bluez.obex.Transfer1 2012-12-21 11:59:41 +02:00
Luiz Augusto von Dentz
6765affa2c obexd: Remove TransferStarted and TransferCompleted signals
This now handled by ObjectManager together with a new property called
Status.
2012-12-21 11:59:40 +02:00
Luiz Augusto von Dentz
84d01d66e1 obexd: Fix transfer path to include session path
Transfer path should use the session path as prefix
2012-12-21 11:59:40 +02:00
Luiz Augusto von Dentz
e62719c47b obexd: Fix session path to include manager path
Manager path is /org/bluez/obex so use it as prefix in the session path.
2012-12-21 11:59:40 +02:00
Luiz Augusto von Dentz
781d49a8e7 obexd: Rename org.bluez.obex.Session to org.bluez.obex.Session1 2012-12-21 11:59:40 +02:00
Luiz Augusto von Dentz
f170537b52 obexd: Rename org.bluez.obex.Transfer to org.bluez.obex.Transfer1 2012-12-21 11:59:40 +02:00