From: Fabien Proriol <[email protected]>
omtu and imtu is define as uint16_t in l2cap_get function (use with va_arg).
But in connect_event, in file bluetooth.c, variables are define as int (32bit in powerpc).
When we use a platform with big endian, the result is omtu and imtu pass to obex_server_new_connection is bigger than needed.
And file transfert will be lock until timeout (for file with size > 630 bytes)
Fabien Proriol (1):
Fix obex protocol for powerpc
obexd/client/bluetooth.c | 4 ++--
obexd/plugins/bluetooth.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
--
2.7.3
Hi Fabien,
On Thu, Jul 28, 2016 at 5:06 PM, <[email protected]> wrote:
> From: Fabien Proriol <[email protected]>
>
> omtu and imtu is define as uint16_t in l2cap_get function (use with va_arg).
> ---
> obexd/client/bluetooth.c | 4 ++--
> obexd/plugins/bluetooth.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/obexd/client/bluetooth.c b/obexd/client/bluetooth.c
> index be007de..e35124a 100644
> --- a/obexd/client/bluetooth.c
> +++ b/obexd/client/bluetooth.c
> @@ -443,8 +443,8 @@ static int bluetooth_getpacketopt(GIOChannel *io, int *tx_mtu, int *rx_mtu)
> {
> int sk = g_io_channel_unix_get_fd(io);
> int type;
> - int omtu = -1;
> - int imtu = -1;
> + uint16_t omtu = BT_TX_MTU;
> + uint16_t imtu = BT_RX_MTU;
> socklen_t len = sizeof(int);
>
> DBG("");
> diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
> index d8b872a..3ee5432 100644
> --- a/obexd/plugins/bluetooth.c
> +++ b/obexd/plugins/bluetooth.c
> @@ -75,8 +75,8 @@ static void connect_event(GIOChannel *io, GError *err, void *user_data)
> struct bluetooth_profile *profile = user_data;
> struct obex_server *server = profile->server;
> int type;
> - int omtu = BT_TX_MTU;
> - int imtu = BT_RX_MTU;
> + uint16_t omtu = BT_TX_MTU;
> + uint16_t imtu = BT_RX_MTU;
> gboolean stream = TRUE;
> socklen_t len = sizeof(int);
>
> --
> 2.7.3
Applied, thanks.
--
Luiz Augusto von Dentz
From: Fabien Proriol <[email protected]>
omtu and imtu is define as uint16_t in l2cap_get function (use with va_arg).
---
obexd/client/bluetooth.c | 4 ++--
obexd/plugins/bluetooth.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/obexd/client/bluetooth.c b/obexd/client/bluetooth.c
index be007de..e35124a 100644
--- a/obexd/client/bluetooth.c
+++ b/obexd/client/bluetooth.c
@@ -443,8 +443,8 @@ static int bluetooth_getpacketopt(GIOChannel *io, int *tx_mtu, int *rx_mtu)
{
int sk = g_io_channel_unix_get_fd(io);
int type;
- int omtu = -1;
- int imtu = -1;
+ uint16_t omtu = BT_TX_MTU;
+ uint16_t imtu = BT_RX_MTU;
socklen_t len = sizeof(int);
DBG("");
diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
index d8b872a..3ee5432 100644
--- a/obexd/plugins/bluetooth.c
+++ b/obexd/plugins/bluetooth.c
@@ -75,8 +75,8 @@ static void connect_event(GIOChannel *io, GError *err, void *user_data)
struct bluetooth_profile *profile = user_data;
struct obex_server *server = profile->server;
int type;
- int omtu = BT_TX_MTU;
- int imtu = BT_RX_MTU;
+ uint16_t omtu = BT_TX_MTU;
+ uint16_t imtu = BT_RX_MTU;
gboolean stream = TRUE;
socklen_t len = sizeof(int);
--
2.7.3
opps, sorry, I sent this new patch a lot too quickly...
uint16_t is unsigned, and can't accept -1...
I need to rework on it
Fabien Proriol
On 28/07/2016 15:12, [email protected] wrote:
> From: Fabien Proriol <[email protected]>
>
> omtu and imtu is define as uint16_t in l2cap_get function (use with va_arg).
> ---
> obexd/client/bluetooth.c | 4 ++--
> obexd/plugins/bluetooth.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/obexd/client/bluetooth.c b/obexd/client/bluetooth.c
> index be007de..3cc1f90 100644
> --- a/obexd/client/bluetooth.c
> +++ b/obexd/client/bluetooth.c
> @@ -443,8 +443,8 @@ static int bluetooth_getpacketopt(GIOChannel *io, int *tx_mtu, int *rx_mtu)
> {
> int sk = g_io_channel_unix_get_fd(io);
> int type;
> - int omtu = -1;
> - int imtu = -1;
> + uint16_t omtu = -1;
> + uint16_t imtu = -1;
> socklen_t len = sizeof(int);
>
> DBG("");
> diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
> index d8b872a..3ee5432 100644
> --- a/obexd/plugins/bluetooth.c
> +++ b/obexd/plugins/bluetooth.c
> @@ -75,8 +75,8 @@ static void connect_event(GIOChannel *io, GError *err, void *user_data)
> struct bluetooth_profile *profile = user_data;
> struct obex_server *server = profile->server;
> int type;
> - int omtu = BT_TX_MTU;
> - int imtu = BT_RX_MTU;
> + uint16_t omtu = BT_TX_MTU;
> + uint16_t imtu = BT_RX_MTU;
> gboolean stream = TRUE;
> socklen_t len = sizeof(int);
>