summaryrefslogtreecommitdiff
path: root/gobex
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2022-02-14 15:40:40 -0800
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2022-02-14 15:40:40 -0800
commit7e7d826aa1dbd4aaa3c74054320e39b71062a9e6 (patch)
treeb01099cb6a5aab7633073df2a287d401e7ca7322 /gobex
parent47bea5418caa40a1c520547140083bad6aa98ed3 (diff)
downloadbluez-7e7d826aa1dbd4aaa3c74054320e39b71062a9e6.tar.gz
gobex: Print error if data cannot be written
This makes sure that if the data cannot be written it fails and the error is properly printed.
Diffstat (limited to 'gobex')
-rw-r--r--gobex/gobex.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/gobex/gobex.c b/gobex/gobex.c
index 54e3b0814..185eed4d7 100644
--- a/gobex/gobex.c
+++ b/gobex/gobex.c
@@ -419,6 +419,8 @@ static gboolean write_data(GIOChannel *io, GIOCondition cond,
gpointer user_data)
{
GObex *obex = user_data;
+ struct pending_pkt *p = NULL;
+ GError *err = NULL;
if (cond & G_IO_NVAL)
return FALSE;
@@ -427,9 +429,9 @@ static gboolean write_data(GIOChannel *io, GIOCondition cond,
goto stop_tx;
if (obex->tx_data == 0) {
- struct pending_pkt *p = g_queue_pop_head(obex->tx_queue);
ssize_t len;
+ p = g_queue_pop_head(obex->tx_queue);
if (p == NULL)
goto stop_tx;
@@ -480,8 +482,19 @@ encode:
return FALSE;
}
- if (!obex->write(obex, NULL))
+ if (!obex->write(obex, &err)) {
+ g_obex_debug(G_OBEX_DEBUG_ERROR, "%s", err->message);
+
+ if (p) {
+ if (p->rsp_func)
+ p->rsp_func(obex, err, NULL, p->rsp_data);
+
+ pending_pkt_free(p);
+ }
+
+ g_error_free(err);
goto stop_tx;
+ }
done:
if (obex->tx_data > 0 || g_queue_get_length(obex->tx_queue) > 0)