diff -Nru bluez-5.14+upstream/debian/bzr-builder.manifest bluez-5.14+upstream/debian/bzr-builder.manifest --- bluez-5.14+upstream/debian/bzr-builder.manifest 2018-02-12 10:17:36.000000000 +0000 +++ bluez-5.14+upstream/debian/bzr-builder.manifest 2018-02-13 10:16:53.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version 5.14+upstream-201802121017~rev19455~pkg9 -lp:bluez revid:git-v1:1d4d0d81277db276f7b03c495751015740a68d50 +# bzr-builder format 0.3 deb-version 5.14+upstream-201802131016~rev19462~pkg9 +lp:bluez revid:git-v1:d13f579a36e8b4f6ea6f45fbab8b77f368116987 nest packaging lp:~rsrchboy/+junk/bluez-packaging debian revid:cweyl@alumni.drew.edu-20140327211020-bclpssq1nz8yo59d diff -Nru bluez-5.14+upstream/debian/changelog bluez-5.14+upstream/debian/changelog --- bluez-5.14+upstream/debian/changelog 2018-02-12 10:17:36.000000000 +0000 +++ bluez-5.14+upstream/debian/changelog 2018-02-13 10:16:53.000000000 +0000 @@ -1,8 +1,8 @@ -bluez (5.14+upstream-201802121017~rev19455~pkg9~ubuntu14.04.1) trusty; urgency=low +bluez (5.14+upstream-201802131016~rev19462~pkg9~ubuntu14.04.1) trusty; urgency=low * Auto build. - -- Chris Weyl Mon, 12 Feb 2018 10:17:36 +0000 + -- Chris Weyl Tue, 13 Feb 2018 10:16:53 +0000 bluez (5.5-1~exp1) experimental; urgency=low diff -Nru bluez-5.14+upstream/obexd/src/manager.c bluez-5.14+upstream/obexd/src/manager.c --- bluez-5.14+upstream/obexd/src/manager.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/obexd/src/manager.c 2018-02-13 10:16:51.000000000 +0000 @@ -533,12 +533,21 @@ dbus_connection_unref(connection); } +void manager_emit_transfer_property(struct obex_transfer *transfer, + char *name) +{ + if (!transfer->path) + return; + + g_dbus_emit_property_changed(connection, transfer->path, + TRANSFER_INTERFACE, name); +} + void manager_emit_transfer_started(struct obex_transfer *transfer) { transfer->status = TRANSFER_STATUS_ACTIVE; - g_dbus_emit_property_changed(connection, transfer->path, - TRANSFER_INTERFACE, "Status"); + manager_emit_transfer_property(transfer, "Status"); } static void emit_transfer_completed(struct obex_transfer *transfer, @@ -550,18 +559,7 @@ transfer->status = success ? TRANSFER_STATUS_COMPLETE : TRANSFER_STATUS_ERROR; - g_dbus_emit_property_changed(connection, transfer->path, - TRANSFER_INTERFACE, "Status"); -} - -static void emit_transfer_progress(struct obex_transfer *transfer, - uint32_t total, uint32_t transferred) -{ - if (transfer->path == NULL) - return; - - g_dbus_emit_property_changed(connection, transfer->path, - TRANSFER_INTERFACE, "Transferred"); + manager_emit_transfer_property(transfer, "Status"); } static void transfer_free(struct obex_transfer *transfer) @@ -783,8 +781,7 @@ void manager_emit_transfer_progress(struct obex_transfer *transfer) { - emit_transfer_progress(transfer, transfer->session->size, - transfer->session->offset); + manager_emit_transfer_property(transfer, "Transferred"); } void manager_emit_transfer_completed(struct obex_transfer *transfer) diff -Nru bluez-5.14+upstream/obexd/src/manager.h bluez-5.14+upstream/obexd/src/manager.h --- bluez-5.14+upstream/obexd/src/manager.h 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/obexd/src/manager.h 2018-02-13 10:16:51.000000000 +0000 @@ -33,6 +33,8 @@ struct obex_transfer *manager_register_transfer(struct obex_session *os); void manager_unregister_transfer(struct obex_transfer *transfer); +void manager_emit_transfer_property(struct obex_transfer *transfer, + char *name); void manager_emit_transfer_started(struct obex_transfer *transfer); void manager_emit_transfer_progress(struct obex_transfer *transfer); void manager_emit_transfer_completed(struct obex_transfer *transfer); diff -Nru bluez-5.14+upstream/obexd/src/obex.c bluez-5.14+upstream/obexd/src/obex.c --- bluez-5.14+upstream/obexd/src/obex.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/obexd/src/obex.c 2018-02-13 10:16:51.000000000 +0000 @@ -779,6 +779,9 @@ return err; } + if (os->size != OBJECT_SIZE_DELETE && os->size != OBJECT_SIZE_UNKNOWN) + manager_emit_transfer_property(os->service_data, "Size"); + os->path = g_strdup(filename); return 0; diff -Nru bluez-5.14+upstream/src/shared/gatt-client.c bluez-5.14+upstream/src/shared/gatt-client.c --- bluez-5.14+upstream/src/shared/gatt-client.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/src/shared/gatt-client.c 2018-02-13 10:16:51.000000000 +0000 @@ -1212,7 +1212,9 @@ struct notify_data *notify_data = data; notify_data->att_id = 0; - notify_data->callback(0, notify_data->user_data); + + if (notify_data->callback) + notify_data->callback(0, notify_data->user_data); } static bool notify_data_write_ccc(struct notify_data *notify_data, bool enable, @@ -3157,6 +3159,10 @@ /* Remove data if it has been queued */ queue_remove(notify_data->chrc->reg_notify_queue, notify_data); + /* Reset callbacks */ + notify_data->callback = NULL; + notify_data->notify = NULL; + complete_unregister_notify(notify_data); return true; } diff -Nru bluez-5.14+upstream/src/shared/gatt-db.c bluez-5.14+upstream/src/shared/gatt-db.c --- bluez-5.14+upstream/src/shared/gatt-db.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/src/shared/gatt-db.c 2018-02-13 10:16:51.000000000 +0000 @@ -115,6 +115,18 @@ struct gatt_db_attribute **attributes; }; +static void set_attribute_data(struct gatt_db_attribute *attribute, + gatt_db_read_t read_func, + gatt_db_write_t write_func, + uint32_t permissions, + void *user_data) +{ + attribute->permissions = permissions; + attribute->read_func = read_func; + attribute->write_func = write_func; + attribute->user_data = user_data; +} + static void pending_read_result(struct pending_read *p, int err, const uint8_t *data, size_t length) { @@ -387,6 +399,8 @@ return NULL; } + set_attribute_data(service->attributes[0], NULL, NULL, BT_ATT_PERM_READ, NULL); + return service; } @@ -655,18 +669,6 @@ return service->attributes[index]; } -static void set_attribute_data(struct gatt_db_attribute *attribute, - gatt_db_read_t read_func, - gatt_db_write_t write_func, - uint32_t permissions, - void *user_data) -{ - attribute->permissions = permissions; - attribute->read_func = read_func; - attribute->write_func = write_func; - attribute->user_data = user_data; -} - static struct gatt_db_attribute * service_insert_characteristic(struct gatt_db_service *service, uint16_t handle, @@ -718,6 +720,8 @@ if (!service->attributes[i]) return NULL; + set_attribute_data(service->attributes[i], NULL, NULL, BT_ATT_PERM_READ, NULL); + i++; service->attributes[i] = new_attribute(service, handle, uuid, NULL, 0); @@ -929,7 +933,7 @@ * * TODO handle permissions */ - set_attribute_data(service->attributes[index], NULL, NULL, 0, NULL); + set_attribute_data(service->attributes[index], NULL, NULL, BT_ATT_PERM_READ, NULL); return attribute_update(service, index); } diff -Nru bluez-5.14+upstream/tools/obexctl.c bluez-5.14+upstream/tools/obexctl.c --- bluez-5.14+upstream/tools/obexctl.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/tools/obexctl.c 2018-02-13 10:16:51.000000000 +0000 @@ -1862,6 +1862,14 @@ int seconds, minutes; dbus_message_iter_get_basic(iter, &valu64); + + /* + * Use the file size to output the proper size/speed since obexd resets + * the current transferred size to zero on completion of transfer. + */ + if (valu64 == 0) + valu64 = data->size; + speed = valu64 - data->transferred; data->transferred = valu64; @@ -1885,6 +1893,9 @@ struct transfer_data *data = user_data; char *str; + if (iter == NULL) + return; + str = proxy_description(proxy, "Transfer", COLORED_CHG); if (strcmp(name, "Transferred") == 0) { diff -Nru bluez-5.14+upstream/unit/test-ecc.c bluez-5.14+upstream/unit/test-ecc.c --- bluez-5.14+upstream/unit/test-ecc.c 2018-02-12 10:17:34.000000000 +0000 +++ bluez-5.14+upstream/unit/test-ecc.c 2018-02-13 10:16:51.000000000 +0000 @@ -94,7 +94,10 @@ uint8_t dhkey_a[32], dhkey_b[32]; int fails = 0; + memset(dhkey_a, 0, sizeof(dhkey_a)); ecdh_shared_secret(pub_b, priv_a, dhkey_a); + + memset(dhkey_b, 0, sizeof(dhkey_b)); ecdh_shared_secret(pub_a, priv_b, dhkey_b); if (g_test_verbose()) { @@ -110,6 +113,7 @@ tester_debug("DHKey A matches :)"); } + if (memcmp(dhkey_b, dhkey, 32)) { tester_debug("DHKey B doesn't match!"); fails++;