Send connman mailing list submissions to
[email protected]
To subscribe or unsubscribe via email, send a message with subject or
body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."
Today's Topics:
1. [PATCH] timeserver: Split new service and configuration update
(Daniel Wagner)
2. Re: [PATCH] Fix time synchronization after updating timeservers
(Daniel Wagner)
3. Re: [PATCH] Force BSS expiration (Daniel Wagner)
4. [PATCH] services: Escape passphrase string (Daniel Wagner)
5. Re: connmanctl fails to connect to WiFi network having passwords ending
with a backslash character
(Daniel Wagner)
6. Re: connmanctl fails to connect to WiFi network having passwords ending
with a backslash character
(Boris *)
7. [PATCH] clock: Add TimeSynced signal emitted when the system time has
been synced
(VAUTRIN Emmanuel (Canal Plus Prestataire))
----------------------------------------------------------------------
Date: Wed, 23 Dec 2020 13:18:55 +0100
From: Daniel Wagner <[email protected]>
Subject: [PATCH] timeserver: Split new service and configuration
update
To: [email protected]
Cc: VAUTRIN Emmanuel <[email protected]>, Daniel Wagner
<[email protected]>
Message-ID: <[email protected]>
Allow to update the existing used service with a new time server
configuration. Instead overloading the __connman_timeservice_sync()
function introduce a new function for updating the currently used
service for time synchronization. By this we document clearly in the
code what is supposed to be updated.
---
src/connman.h | 3 ++-
src/service.c | 4 +---
src/timeserver.c | 53 +++++++++++++++++++++++++++---------------------
3 files changed, 33 insertions(+), 27 deletions(-)
diff --git a/src/connman.h b/src/connman.h
index 12e9407f261e..17452a76567f 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -451,7 +451,8 @@ char **__connman_timeserver_system_get();
GSList *__connman_timeserver_add_list(GSList *server_list,
const char *timeserver);
GSList *__connman_timeserver_get_all(struct connman_service *service);
-int __connman_timeserver_sync(struct connman_service *service);
+void __connman_timeserver_sync(struct connman_service *service);
+void __connman_timeserver_conf_update(struct connman_service *service);
enum __connman_dhcpv6_status {
CONNMAN_DHCPV6_STATUS_FAIL = 0,
diff --git a/src/service.c b/src/service.c
index f8ea8ebbe9a4..2c01447e4673 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3746,9 +3746,7 @@ static DBusMessage *set_property(DBusConnection *conn,
service_save(service);
timeservers_configuration_changed(service);
-
- if (service == connman_service_get_default())
- __connman_timeserver_sync(service);
+ __connman_timeserver_conf_update(service);
} else if (g_str_equal(name, "Domains.Configuration")) {
DBusMessageIter entry;
diff --git a/src/timeserver.c b/src/timeserver.c
index 7e4f88ae849a..9e221a26bfc8 100644
--- a/src/timeserver.c
+++ b/src/timeserver.c
@@ -272,6 +272,7 @@ GSList *__connman_timeserver_get_all(struct connman_service
*service)
static gboolean ts_recheck(gpointer user_data)
{
+ struct connman_service *service;
GSList *ts;
ts = __connman_timeserver_get_all(connman_service_get_default());
@@ -287,7 +288,8 @@ static gboolean ts_recheck(gpointer user_data)
g_slist_free_full(ts, g_free);
- __connman_timeserver_sync(NULL);
+ service = connman_service_get_default();
+ __connman_timeserver_sync(service);
return FALSE;
}
@@ -327,29 +329,14 @@ static void ts_recheck_enable(void)
NULL);
}
-/*
- * This function must be called every time the default service changes, the
- * service timeserver(s) or gateway changes or the global timeserver(s)
changes.
- */
-int __connman_timeserver_sync(struct connman_service *default_service)
+static void ts_reset(struct connman_service *service)
{
- struct connman_service *service;
char **nameservers;
int i;
- if (default_service)
- service = default_service;
- else
- service = connman_service_get_default();
-
- if (!service)
- return -EINVAL;
-
- if (service == ts_service)
- return -EALREADY;
-
if (!resolv)
- return 0;
+ return;
+
/*
* Before we start creating the new timeserver list we must stop
* any ongoing ntp query and server resolution.
@@ -380,17 +367,32 @@ int __connman_timeserver_sync(struct connman_service
*default_service)
if (!timeservers_list) {
DBG("No timeservers set.");
- return 0;
+ return;
}
ts_recheck_enable();
ts_service = service;
timeserver_sync_start();
+}
- return 0;
+void __connman_timeserver_sync(struct connman_service *service)
+{
+ if (!service || service == ts_service)
+ return;
+
+ ts_reset(service);
}
+void __connman_timeserver_conf_update(struct connman_service *service)
+{
+ if (!service || service != ts_service)
+ return;
+
+ ts_reset(service);
+}
+
+
static int timeserver_start(struct connman_service *service)
{
char **nameservers;
@@ -430,7 +432,9 @@ static int timeserver_start(struct connman_service *service)
g_strfreev(nameservers);
}
- return __connman_timeserver_sync(service);
+ __connman_timeserver_sync(service);
+
+ return 0;
}
static void timeserver_stop(void)
@@ -457,9 +461,12 @@ static void timeserver_stop(void)
int __connman_timeserver_system_set(char **servers)
{
+ struct connman_service *service;
+
save_timeservers(servers);
- __connman_timeserver_sync(NULL);
+ service = connman_service_get_default();
+ __connman_timeserver_conf_update(service);
return 0;
}
--
2.29.2
------------------------------
Date: Wed, 23 Dec 2020 13:20:46 +0100
From: Daniel Wagner <[email protected]>
Subject: Re: [PATCH] Fix time synchronization after updating
timeservers
To: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
<[email protected]>
Cc: "[email protected]" <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
On Tue, Dec 22, 2020 at 09:55:26AM +0000, VAUTRIN Emmanuel (Canal Plus
Prestataire) wrote:
> When starting my board with TimeUpdates in auto and Timeservers to an
> empty array, the Time is set to /etc/timestamp default value. After a
> while (I am online, with internet working, ntp reachable...), when I
> decide to get the time from the network, by setting Timeservers to
> real NTP configurations, the Time is not updated to the current date
> and time as expected, but continue incrementing from its default value
> (/etc/timestamp).
I see, so the problem is that the service stays the same but the time
server configuration changes, which will not be considered. Let's fix
this properly by introducing a function just for updating the current
configuration. I'll send out a patch for this. Can you test it please?
------------------------------
Date: Wed, 23 Dec 2020 14:02:05 +0100
From: Daniel Wagner <[email protected]>
Subject: Re: [PATCH] Force BSS expiration
To: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
<[email protected]>
Cc: "[email protected]" <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
Hi Emmanuel,
On Tue, Dec 22, 2020 at 03:21:21PM +0000, VAUTRIN Emmanuel (Canal Plus
Prestataire) wrote:
> By our side, with wpa_supplicant, we are facing the minimal network
> list (only ethernet and connected wifi) during 2 minutes every 3
> minutes.
Thanks for adding the commit message. The explanation makes totally
sense. I am surprised no one was providing a fix long before. So thank
you!
> Please find my attached patch, taking into account your remarks.
I've reformatted it slightly, so it matches a bit more the code style in
the file. Also I changed the connman_error() into a connman_warn() as
this is not a real error IMO.
Patch applied.
Thanks,
Daniel
------------------------------
Date: Wed, 23 Dec 2020 16:04:42 +0100
From: Daniel Wagner <[email protected]>
Subject: [PATCH] services: Escape passphrase string
To: [email protected]
Cc: Daniel Wagner <[email protected]>
Message-ID: <[email protected]>
The WiFi passphrase might use chars which need escaping because
g_key_file_get_string() is trying to decode the strings it reads.
---
src/service.c | 11 ++++++++---
src/technology.c | 13 +++++++++----
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/service.c b/src/service.c
index f8ea8ebbe9a4..a83f98757cf1 100644
--- a/src/service.c
+++ b/src/service.c
@@ -572,8 +572,10 @@ static int service_load(struct connman_service *service)
str = g_key_file_get_string(keyfile,
service->identifier, "Passphrase", NULL);
if (str) {
+ char *dec = g_strcompress(str);
+ g_free(str);
g_free(service->passphrase);
- service->passphrase = str;
+ service->passphrase = dec;
}
if (service->ipconfig_ipv4)
@@ -736,9 +738,12 @@ static int service_save(struct connman_service *service)
g_free(str);
}
- if (service->passphrase && strlen(service->passphrase) > 0)
+ if (service->passphrase && strlen(service->passphrase) > 0) {
+ char *enc = g_strescape(service->passphrase, NULL);
g_key_file_set_string(keyfile, service->identifier,
- "Passphrase", service->passphrase);
+ "Passphrase", enc);
+ g_free(enc);
+ }
if (service->ipconfig_ipv4)
__connman_ipconfig_save(service->ipconfig_ipv4, keyfile,
diff --git a/src/technology.c b/src/technology.c
index 4e053fc9caa9..672d6ea81990 100644
--- a/src/technology.c
+++ b/src/technology.c
@@ -185,10 +185,12 @@ static void technology_save(struct connman_technology
*technology)
"Tethering.Identifier",
technology->tethering_ident);
- if (technology->tethering_passphrase)
+ if (technology->tethering_passphrase) {
+ char *enc = g_strescape(technology->tethering_passphrase, NULL);
g_key_file_set_string(keyfile, identifier,
- "Tethering.Passphrase",
- technology->tethering_passphrase);
+ "Tethering.Passphrase", enc);
+ g_free(enc);
+ }
done:
g_free(identifier);
@@ -390,6 +392,7 @@ static void technology_load(struct connman_technology
*technology)
gchar *identifier;
GError *error = NULL;
bool enable, need_saving = false;
+ char *enc;
DBG("technology %p", technology);
@@ -436,8 +439,10 @@ static void technology_load(struct connman_technology
*technology)
technology->tethering_ident = g_key_file_get_string(keyfile,
identifier, "Tethering.Identifier", NULL);
- technology->tethering_passphrase = g_key_file_get_string(keyfile,
+ enc = g_key_file_get_string(keyfile,
identifier, "Tethering.Passphrase", NULL);
+ if (enc)
+ technology->tethering_passphrase = g_strcompress(enc);
done:
g_free(identifier);
--
2.29.2
------------------------------
Date: Wed, 23 Dec 2020 16:12:16 +0100
From: Daniel Wagner <[email protected]>
Subject: Re: connmanctl fails to connect to WiFi network having
passwords ending with a backslash character
To: * * <[email protected]>
Cc: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
On Tue, Dec 22, 2020 at 11:19:05AM +0100, Daniel Wagner wrote:
> > # cat settings
> > Passphrase="kjHTJ235nnM!0
>
> We use GLib's key file API to read and write the settings file. The
> problem might be we that we don't escape the special chars when writing
> the passhphrase and later we retrieve it using a plain
> g_key_file_get_string(). The documenation says
>
> '... this function handles escape sequences like \s.'
>
> So clearly we need to encode the string when saving it to settings.
FYI, just sent out a patch which escapes the passphrase. Please give it
go and let me know if it works for you.
------------------------------
Date: Wed, 23 Dec 2020 15:16:06 +0000
From: "Boris *" <[email protected]>
Subject: Re: connmanctl fails to connect to WiFi network having
passwords ending with a backslash character
To: Daniel Wagner <[email protected]>
Cc: [email protected]
Message-ID:
<CAP9vw1=CxcRWDd0hVVR53S=USq5PqhdVD82=c9tfpx0qa-a...@mail.gmail.com>
Content-Type: multipart/alternative;
boundary="000000000000b5db5705b7232dff"
--000000000000b5db5705b7232dff
Content-Type: text/plain; charset="UTF-8"
Hi Daniel,
thanks a lot for the swift action on that, it is far beyond my expectations
as I did not even know about the community just a few days ago.
I'll test it and report back ASAP.
Cheers!
Boris
--
On Wed, 23 Dec 2020 at 15:12, Daniel Wagner <[email protected]> wrote:
> On Tue, Dec 22, 2020 at 11:19:05AM +0100, Daniel Wagner wrote:
> > > # cat settings
> > > Passphrase="kjHTJ235nnM!0
> >
> > We use GLib's key file API to read and write the settings file. The
> > problem might be we that we don't escape the special chars when writing
> > the passhphrase and later we retrieve it using a plain
> > g_key_file_get_string(). The documenation says
> >
> > '... this function handles escape sequences like \s.'
> >
> > So clearly we need to encode the string when saving it to settings.
>
> FYI, just sent out a patch which escapes the passphrase. Please give it
> go and let me know if it works for you.
>
--000000000000b5db5705b7232dff
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hi Daniel,<div><br></div><div>thanks a lot for the swift a=
ction on that, it is far beyond my expectations as I did not even know abou=
t the community just a few days ago.</div><div>I'll test it and report =
back ASAP.</div><div><br></div><div>Cheers!</div><div><br clear=3D"all"><di=
v><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signat=
ure"><br>Boris<br>--<br></div></div><br></div></div><br><div class=3D"gmail=
_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, 23 Dec 2020 at 15:12,=
Daniel Wagner <<a href=3D"mailto:[email protected]">[email protected]</a>>=
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, =
Dec 22, 2020 at 11:19:05AM +0100, Daniel Wagner wrote:<br>
> > # cat settings<br>
> > Passphrase=3D"kjHTJ235nnM!0<br>
> <br>
> We use GLib's key file API to read and write the settings file. Th=
e<br>
> problem might be we that we don't escape the special chars when wr=
iting<br>
> the passhphrase and later we retrieve it using a plain<br>
> g_key_file_get_string(). The documenation says<br>
> <br>
>=C2=A0 =C2=A0 '... this function handles escape sequences like \s.&=
#39;<br>
> <br>
> So clearly we need to encode the string when saving it to settings.<br=
>
<br>
FYI, just sent out a patch which escapes the passphrase. Please give it<br>
go and let me know if it works for you.<br>
</blockquote></div>
--000000000000b5db5705b7232dff--
------------------------------
Date: Wed, 23 Dec 2020 15:19:30 +0000
From: "VAUTRIN Emmanuel (Canal Plus Prestataire)"
<[email protected]>
Subject: [PATCH] clock: Add TimeSynced signal emitted when the system
time has been synced
To: "[email protected]" <[email protected]>
Message-ID: <[email protected]
prd02.prod.outlook.com>
Content-Type: multipart/mixed; boundary="_004_PR1PR02MB47943DC59AF073
0A8A5975F093DE0PR1PR02MB4794eurp_"
--_004_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_
Content-Type: multipart/alternative;
boundary="_000_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_"
--_000_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hello,
As our system depends on https requests, and for boot performance purposes,=
we need to be informed when a time synchronization (via the ntp) is perfor=
med.
In this aim, please find the attached patch, adding the TimeSynced signal e=
mitted when the system time has been synced.
Best Regards,
Emmanuel
--_000_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
Hello,</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
As our system depends on https requests, and for boot performance purposes,=
we need to be informed when a time synchronization (via the ntp) is perfor=
med.</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
In this aim, please find the attached patch, adding the TimeSynced signal e=
mitted when the system time has been synced.</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
Best Regards,</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
Emmanuel<br>
</div>
</body>
</html>
--_000_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_--
--_004_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_
Content-Type: text/x-patch; name="0001-1-clock-Add-TimeSynced-signal.patch"
Content-Description: 0001-1-clock-Add-TimeSynced-signal.patch
Content-Disposition: attachment;
filename="0001-1-clock-Add-TimeSynced-signal.patch"; size=3298;
creation-date="Wed, 23 Dec 2020 15:05:33 GMT";
modification-date="Wed, 23 Dec 2020 15:06:24 GMT"
Content-Transfer-Encoding: base64
RnJvbSBjZjMxMWU5OThjODViMTg3MDM4ODZiNDliYzk4YzA2ODQwNjEyYzIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbW1hbnVlbCBWQVVUUklOIDxFbW1hbnVlbC5WQVVUUklOQGNw
ZXh0ZXJuZS5vcmc+CkRhdGU6IFdlZCwgMjMgRGVjIDIwMjAgMTI6MDY6MDQgKzAxMDAKU3ViamVj
dDogW1BBVENIXSBjbG9jazogQWRkIFRpbWVTeW5jZWQgc2lnbmFsIGVtaXR0ZWQgd2hlbiB0aGUg
c3lzdGVtIHRpbWUgaGFzCiBiZWVuIHN5bmNlZC4KCi0tLQogZG9jL2Nsb2NrLWFwaS50eHQgfCAg
NCArKysrCiBpbmNsdWRlL2RidXMuaCAgICB8ICAyICsrCiBzcmMvY2xvY2suYyAgICAgICB8ICAy
ICsrCiBzcmMvZGJ1cy5jICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwogc3JjL3RpbWVzZXJ2ZXIuYyAgfCAgMyArKysKIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0
aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9jbG9jay1hcGkudHh0IGIvZG9jL2Nsb2NrLWFwaS50
eHQKaW5kZXggNjgxOGY1YTguLjJlMzY4ZDBhIDEwMDY0NAotLS0gYS9kb2MvY2xvY2stYXBpLnR4
dAorKysgYi9kb2MvY2xvY2stYXBpLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgU2lnbmFscwkJUHJv
cGVydHlDaGFuZ2VkKHN0cmluZyBuYW1lLCB2YXJpYW50IHZhbHVlKSAgW2V4cGVyaW1lbnRhbF0K
IAkJCVRoaXMgc2lnbmFsIGluZGljYXRlcyBhIGNoYW5nZWQgdmFsdWUgb2YgdGhlIGdpdmVuCiAJ
CQlwcm9wZXJ0eS4KIAorCQkJVGltZVN5bmNlZCh1aW50NjQgVGltZSkgIFtleHBlcmltZW50YWxd
CisKKwkJCVRoaXMgc2lnbmFsIGluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IHN5c3RlbSB0aW1l
CisJCQloYXMgYmVlbiBzeW5jZWQuCiAKIFByb3BlcnRpZXMJdWludDY0IFRpbWUgW3JlYWRvbmx5
IG9yIHJlYWR3cml0ZV0gIFtleHBlcmltZW50YWxdCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZGJ1
cy5oIGIvaW5jbHVkZS9kYnVzLmgKaW5kZXggYmNhYjQxODkuLjMyMDhhZGM1IDEwMDY0NAotLS0g
YS9pbmNsdWRlL2RidXMuaAorKysgYi9pbmNsdWRlL2RidXMuaApAQCAtODUsNiArODUsOCBAQCBk
YnVzX2Jvb2xfdCBjb25ubWFuX2RidXNfc2V0dGluZ19jaGFuZ2VkX2FycmF5KGNvbnN0IGNoYXIg
Km93bmVyLAogCQkJCWNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmtleSwgaW50IHR5cGUs
CiAJCQkJY29ubm1hbl9kYnVzX2FwcGVuZF9jYl90IGZ1bmN0aW9uLAogCQkJCXZvaWQgKnVzZXJf
ZGF0YSk7CitkYnVzX2Jvb2xfdCBjb25ubWFuX2RidXNfdGltZV9zeW5jZWQoY29uc3QgY2hhciAq
cGF0aCwKKwkJCQljb25zdCBjaGFyICppbnRlcmZhY2UpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQg
Y29ubm1hbl9kYnVzX2RpY3Rfb3BlbihEQnVzTWVzc2FnZUl0ZXIgKml0ZXIsCiAJCQkJCQkJREJ1
c01lc3NhZ2VJdGVyICpkaWN0KQpkaWZmIC0tZ2l0IGEvc3JjL2Nsb2NrLmMgYi9zcmMvY2xvY2su
YwppbmRleCAwZmRlMmMzNC4uMzE1ZTkwOGUgMTAwNjQ0Ci0tLSBhL3NyYy9jbG9jay5jCisrKyBi
L3NyYy9jbG9jay5jCkBAIC0zODEsNiArMzgxLDggQEAgc3RhdGljIGNvbnN0IEdEQnVzTWV0aG9k
VGFibGUgY2xvY2tfbWV0aG9kc1tdID0gewogc3RhdGljIGNvbnN0IEdEQnVzU2lnbmFsVGFibGUg
Y2xvY2tfc2lnbmFsc1tdID0gewogCXsgR0RCVVNfU0lHTkFMKCJQcm9wZXJ0eUNoYW5nZWQiLAog
CQkJR0RCVVNfQVJHUyh7ICJuYW1lIiwgInMiIH0sIHsgInZhbHVlIiwgInYiIH0pKSB9LAorCXsg
R0RCVVNfU0lHTkFMKCJUaW1lU3luY2VkIiwKKwkJCUdEQlVTX0FSR1MoeyAibmFtZSIsICJzIiB9
LCB7ICJ2YWx1ZSIsICJ2IiB9KSkgfSwKIAl7IH0sCiB9OwogCmRpZmYgLS1naXQgYS9zcmMvZGJ1
cy5jIGIvc3JjL2RidXMuYwppbmRleCBkODBhNDZjZS4uNzNkMWJhZDYgMTAwNjQ0Ci0tLSBhL3Ny
Yy9kYnVzLmMKKysrIGIvc3JjL2RidXMuYwpAQCAtMjMsNiArMjMsOCBAQAogI2luY2x1ZGUgPGNv
bmZpZy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorCiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxnZGJ1cy5oPgpAQCAtMzgyLDYg
KzM4NCwzNCBAQCBkYnVzX2Jvb2xfdCBjb25ubWFuX2RidXNfc2V0dGluZ19jaGFuZ2VkX2FycmF5
KGNvbnN0IGNoYXIgKm93bmVyLAogCXJldHVybiBUUlVFOwogfQogCitkYnVzX2Jvb2xfdCBjb25u
bWFuX2RidXNfdGltZV9zeW5jZWQoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqaW50ZXJm
YWNlKQoreworCURCdXNNZXNzYWdlICpzaWduYWw7CisJREJ1c01lc3NhZ2VJdGVyIGl0ZXI7CisJ
c3RydWN0IHRpbWV2YWwgdHY7CisJZGJ1c191aW50NjRfdCB2YWwgPSAwOworCisJaWYgKCFwYXRo
KQorCQlyZXR1cm4gRkFMU0U7CisKKwlzaWduYWwgPSBkYnVzX21lc3NhZ2VfbmV3X3NpZ25hbChw
YXRoLCBpbnRlcmZhY2UsICJUaW1lU3luY2VkIik7CisJaWYgKCFzaWduYWwpCisJCXJldHVybiBG
QUxTRTsKKworCWRidXNfbWVzc2FnZV9pdGVyX2luaXRfYXBwZW5kKHNpZ25hbCwgJml0ZXIpOwor
CisJaWYgKGdldHRpbWVvZmRheSgmdHYsIE5VTEwpID09IDApIHsKKwkJdmFsID0gdHYudHZfc2Vj
OworCX0KKworCWNvbm5tYW5fZGJ1c19wcm9wZXJ0eV9hcHBlbmRfYmFzaWMoJml0ZXIsICJUaW1l
IiwKKwkJCQkJCURCVVNfVFlQRV9VSU5UNjQsICZ2YWwpOworCisJZ19kYnVzX3NlbmRfbWVzc2Fn
ZShjb25uZWN0aW9uLCBzaWduYWwpOworCisJcmV0dXJuIFRSVUU7Cit9CisKIGRidXNfYm9vbF90
IF9fY29ubm1hbl9kYnVzX2FwcGVuZF9vYmpwYXRoX2RpY3RfYXJyYXkoREJ1c01lc3NhZ2UgKm1z
ZywKIAkJY29ubm1hbl9kYnVzX2FwcGVuZF9jYl90IGZ1bmN0aW9uLCB2b2lkICp1c2VyX2RhdGEp
CiB7CmRpZmYgLS1naXQgYS9zcmMvdGltZXNlcnZlci5jIGIvc3JjL3RpbWVzZXJ2ZXIuYwppbmRl
eCBkZWNjYTE1My4uZWJkMWZhYjMgMTAwNjQ0Ci0tLSBhL3NyYy90aW1lc2VydmVyLmMKKysrIGIv
c3JjL3RpbWVzZXJ2ZXIuYwpAQCAtNTcsNiArNTcsOSBAQCBzdGF0aWMgdm9pZCBudHBfY2FsbGJh
Y2soYm9vbCBzdWNjZXNzLCB2b2lkICp1c2VyX2RhdGEpCiAKIAlpZiAoIXN1Y2Nlc3MpCiAJCXN5
bmNfbmV4dCgpOworCWVsc2UKKwkJY29ubm1hbl9kYnVzX3RpbWVfc3luY2VkKENPTk5NQU5fTUFO
QUdFUl9QQVRILAorCQkJCQlDT05OTUFOX0NMT0NLX0lOVEVSRkFDRSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHNhdmVfdGltZXNlcnZlcnMoY2hhciAqKnNlcnZlcnMpCi0tIAoyLjI1LjEKCg==
--_004_PR1PR02MB47943DC59AF0730A8A5975F093DE0PR1PR02MB4794eurp_--
------------------------------
Subject: Digest Footer
_______________________________________________
connman mailing list -- [email protected]
To unsubscribe send an email to [email protected]
------------------------------
End of connman Digest, Vol 62, Issue 28
***************************************