* [MPTCP] [PATCH 1/2] mptcp: reduce number of pr_debug() calls.
@ 2019-06-08 0:40 Peter Krystad
0 siblings, 0 replies; 4+ messages in thread
From: Peter Krystad @ 2019-06-08 0:40 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 2727 bytes --]
squashto: Handle MPTCP TCP options
Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
net/mptcp/options.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 1bee4a267fd8..cad1702323a3 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -13,7 +13,7 @@
void mptcp_parse_option(const unsigned char *ptr, int opsize,
struct tcp_options_received *opt_rx)
{
- struct mptcp_options_received *mp_opt;
+ struct mptcp_options_received *mp_opt = &opt_rx->mptcp;
u8 subtype = *ptr >> 4;
int expected_opsize;
@@ -29,25 +29,29 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
opsize != TCPOLEN_MPTCP_MPC_SYNACK)
break;
- pr_debug("MP_CAPABLE");
- opt_rx->mptcp.version = *ptr++ & MPTCPOPT_VERSION_MASK;
- if (opt_rx->mptcp.version != 0)
+ mp_opt->version = *ptr++ & MPTCPOPT_VERSION_MASK;
+ if (mp_opt->version != 0)
break;
- pr_debug("flags=%02x", *ptr);
- opt_rx->mptcp.flags = *ptr++;
- if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA1) ||
+ mp_opt->flags = *ptr++;
+ if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) ==
+ MPTCP_CAP_HMAC_SHA1) ||
(opt_rx->mptcp.flags & MPTCP_CAP_EXTENSIBILITY))
break;
- opt_rx->mptcp.mp_capable = 1;
- opt_rx->mptcp.sndr_key = get_unaligned_be64(ptr);
- pr_debug("sndr_key=%llu", opt_rx->mptcp.sndr_key);
+ mp_opt->mp_capable = 1;
+ mp_opt->sndr_key = get_unaligned_be64(ptr);
ptr += 8;
+
if (opsize == TCPOLEN_MPTCP_MPC_SYNACK) {
- opt_rx->mptcp.rcvr_key = get_unaligned_be64(ptr);
- pr_debug("rcvr_key=%llu", opt_rx->mptcp.rcvr_key);
+ mp_opt->rcvr_key = get_unaligned_be64(ptr);
ptr += 8;
+ pr_debug("MP_CAPABLE flags=%x, sndr=%llu, rcvr=%llu",
+ mp_opt->flags, mp_opt->sndr_key,
+ mp_opt->rcvr_key);
+ } else {
+ pr_debug("MP_CAPABLE flags=%x, sndr=%llu",
+ mp_opt->flags, mp_opt->sndr_key);
}
break;
@@ -83,7 +87,6 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
*/
case MPTCPOPT_DSS:
pr_debug("DSS");
- mp_opt = &opt_rx->mptcp;
mp_opt->dss = 1;
ptr++;
@@ -399,10 +402,8 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
if (OPTION_MPTCP_MPC_SYN & opts->suboptions)
len = TCPOLEN_MPTCP_MPC_SYN;
- else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
- len = TCPOLEN_MPTCP_MPC_SYNACK;
else
- len = TCPOLEN_MPTCP_MPC_ACK;
+ len = TCPOLEN_MPTCP_MPC_SYNACK;
*ptr++ = htonl((TCPOPT_MPTCP << 24) | (len << 16) |
(MPTCPOPT_MP_CAPABLE << 12) |
--
2.17.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [MPTCP] [PATCH 1/2] mptcp: reduce number of pr_debug() calls.
@ 2019-06-11 11:48 Matthieu Baerts
0 siblings, 0 replies; 4+ messages in thread
From: Matthieu Baerts @ 2019-06-11 11:48 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 4251 bytes --]
Hi Peter,
On 08/06/2019 02:40, Peter Krystad wrote:
> squashto: Handle MPTCP TCP options
Thank you for the new patch!
I have two questions, please see below.
> Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
> ---
> net/mptcp/options.c | 33 +++++++++++++++++----------------
> 1 file changed, 17 insertions(+), 16 deletions(-)
>
> diff --git a/net/mptcp/options.c b/net/mptcp/options.c
> index 1bee4a267fd8..cad1702323a3 100644
> --- a/net/mptcp/options.c
> +++ b/net/mptcp/options.c
> @@ -13,7 +13,7 @@
> void mptcp_parse_option(const unsigned char *ptr, int opsize,
> struct tcp_options_received *opt_rx)
> {
> - struct mptcp_options_received *mp_opt;
> + struct mptcp_options_received *mp_opt = &opt_rx->mptcp;
> u8 subtype = *ptr >> 4;
> int expected_opsize;
>
> @@ -29,25 +29,29 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> opsize != TCPOLEN_MPTCP_MPC_SYNACK)
> break;
>
> - pr_debug("MP_CAPABLE");
> - opt_rx->mptcp.version = *ptr++ & MPTCPOPT_VERSION_MASK;
> - if (opt_rx->mptcp.version != 0)
> + mp_opt->version = *ptr++ & MPTCPOPT_VERSION_MASK;
> + if (mp_opt->version != 0)
> break;
>
> - pr_debug("flags=%02x", *ptr);
> - opt_rx->mptcp.flags = *ptr++;
> - if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA1) ||
> + mp_opt->flags = *ptr++;
> + if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) ==
> + MPTCP_CAP_HMAC_SHA1) ||
> (opt_rx->mptcp.flags & MPTCP_CAP_EXTENSIBILITY))
> break;
detail: could we use "mp_opt->flags" here instead of
"opt_rx->mptcp.flags" used twice here above.
>
> - opt_rx->mptcp.mp_capable = 1;
> - opt_rx->mptcp.sndr_key = get_unaligned_be64(ptr);
> - pr_debug("sndr_key=%llu", opt_rx->mptcp.sndr_key);
> + mp_opt->mp_capable = 1;
> + mp_opt->sndr_key = get_unaligned_be64(ptr);
> ptr += 8;
> +
> if (opsize == TCPOLEN_MPTCP_MPC_SYNACK) {
> - opt_rx->mptcp.rcvr_key = get_unaligned_be64(ptr);
> - pr_debug("rcvr_key=%llu", opt_rx->mptcp.rcvr_key);
> + mp_opt->rcvr_key = get_unaligned_be64(ptr);
> ptr += 8;
> + pr_debug("MP_CAPABLE flags=%x, sndr=%llu, rcvr=%llu",
> + mp_opt->flags, mp_opt->sndr_key,
> + mp_opt->rcvr_key);
> + } else {
> + pr_debug("MP_CAPABLE flags=%x, sndr=%llu",
> + mp_opt->flags, mp_opt->sndr_key);
> }
> break;
>
> @@ -83,7 +87,6 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> */
> case MPTCPOPT_DSS:
> pr_debug("DSS");
> - mp_opt = &opt_rx->mptcp;
> mp_opt->dss = 1;
> ptr++;
>
> @@ -399,10 +402,8 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
>
> if (OPTION_MPTCP_MPC_SYN & opts->suboptions)
> len = TCPOLEN_MPTCP_MPC_SYN;
> - else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
> - len = TCPOLEN_MPTCP_MPC_SYNACK;
> else
> - len = TCPOLEN_MPTCP_MPC_ACK;
> + len = TCPOLEN_MPTCP_MPC_SYNACK;
I am not sure to follow why you did this change. It doesn't seem to be
related to the pr_debug() calls. Are you doing that because
TCPOLEN_MPTCP_MPC_ACK == TCPOLEN_MPTCP_MPC_SYNACK == 20?
3 commits are modifying this first block in mptcp_write_options():
- 47168d901887 (mptcp: Handle MPTCP TCP options)
- 5e4c2881c7c9 (mptcp: Handle MP_CAPABLE options for outgoing connections)
- 447773e0cd92 (mptcp: Create SUBFLOW socket for incoming connections)
The first one introduces this block (with "OPTION_MPTCP_MPC_SYNACK").
The second one removes "OPTION_MPTCP_MPC_SYNACK" condition.
The third one re-adds "OPTION_MPTCP_MPC_SYNACK".
Should we not introduce "OPTION_MPTCP_MPC_SYNACK" condition only at the
3rd patch and keep:
else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
for clarity purposes?
It's a detail but it is blocking me to know how to apply this patch
correctly and avoid this add/remove/re-add :)
Cheers,
Matt
> *ptr++ = htonl((TCPOPT_MPTCP << 24) | (len << 16) |
> (MPTCPOPT_MP_CAPABLE << 12) |
>
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [MPTCP] [PATCH 1/2] mptcp: reduce number of pr_debug() calls.
@ 2019-06-11 17:17 Peter Krystad
0 siblings, 0 replies; 4+ messages in thread
From: Peter Krystad @ 2019-06-11 17:17 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 4759 bytes --]
See my responses inline:
On Tue, 2019-06-11 at 13:48 +0200, Matthieu Baerts wrote:
> Hi Peter,
>
> On 08/06/2019 02:40, Peter Krystad wrote:
> > squashto: Handle MPTCP TCP options
>
> Thank you for the new patch!
>
> I have two questions, please see below.
>
> > Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
> > ---
> > net/mptcp/options.c | 33 +++++++++++++++++----------------
> > 1 file changed, 17 insertions(+), 16 deletions(-)
> >
> > diff --git a/net/mptcp/options.c b/net/mptcp/options.c
> > index 1bee4a267fd8..cad1702323a3 100644
> > --- a/net/mptcp/options.c
> > +++ b/net/mptcp/options.c
> > @@ -13,7 +13,7 @@
> > void mptcp_parse_option(const unsigned char *ptr, int opsize,
> > struct tcp_options_received *opt_rx)
> > {
> > - struct mptcp_options_received *mp_opt;
> > + struct mptcp_options_received *mp_opt = &opt_rx->mptcp;
> > u8 subtype = *ptr >> 4;
> > int expected_opsize;
> >
> > @@ -29,25 +29,29 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> > opsize != TCPOLEN_MPTCP_MPC_SYNACK)
> > break;
> >
> > - pr_debug("MP_CAPABLE");
> > - opt_rx->mptcp.version = *ptr++ & MPTCPOPT_VERSION_MASK;
> > - if (opt_rx->mptcp.version != 0)
> > + mp_opt->version = *ptr++ & MPTCPOPT_VERSION_MASK;
> > + if (mp_opt->version != 0)
> > break;
> >
> > - pr_debug("flags=%02x", *ptr);
> > - opt_rx->mptcp.flags = *ptr++;
> > - if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA1) ||
> > + mp_opt->flags = *ptr++;
> > + if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) ==
> > + MPTCP_CAP_HMAC_SHA1) ||
> > (opt_rx->mptcp.flags & MPTCP_CAP_EXTENSIBILITY))
> > break;
>
> detail: could we use "mp_opt->flags" here instead of
> "opt_rx->mptcp.flags" used twice here above.
Sure.
> >
> > - opt_rx->mptcp.mp_capable = 1;
> > - opt_rx->mptcp.sndr_key = get_unaligned_be64(ptr);
> > - pr_debug("sndr_key=%llu", opt_rx->mptcp.sndr_key);
> > + mp_opt->mp_capable = 1;
> > + mp_opt->sndr_key = get_unaligned_be64(ptr);
> > ptr += 8;
> > +
> > if (opsize == TCPOLEN_MPTCP_MPC_SYNACK) {
> > - opt_rx->mptcp.rcvr_key = get_unaligned_be64(ptr);
> > - pr_debug("rcvr_key=%llu", opt_rx->mptcp.rcvr_key);
> > + mp_opt->rcvr_key = get_unaligned_be64(ptr);
> > ptr += 8;
> > + pr_debug("MP_CAPABLE flags=%x, sndr=%llu, rcvr=%llu",
> > + mp_opt->flags, mp_opt->sndr_key,
> > + mp_opt->rcvr_key);
> > + } else {
> > + pr_debug("MP_CAPABLE flags=%x, sndr=%llu",
> > + mp_opt->flags, mp_opt->sndr_key);
> > }
> > break;
> >
> > @@ -83,7 +87,6 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> > */
> > case MPTCPOPT_DSS:
> > pr_debug("DSS");
> > - mp_opt = &opt_rx->mptcp;
> > mp_opt->dss = 1;
> > ptr++;
> >
> > @@ -399,10 +402,8 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
> >
> > if (OPTION_MPTCP_MPC_SYN & opts->suboptions)
> > len = TCPOLEN_MPTCP_MPC_SYN;
> > - else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
> > - len = TCPOLEN_MPTCP_MPC_SYNACK;
> > else
> > - len = TCPOLEN_MPTCP_MPC_ACK;
> > + len = TCPOLEN_MPTCP_MPC_SYNACK;
>
> I am not sure to follow why you did this change. It doesn't seem to be
> related to the pr_debug() calls. Are you doing that because
> TCPOLEN_MPTCP_MPC_ACK == TCPOLEN_MPTCP_MPC_SYNACK == 20?
I'll pull this out of the patch, not sure why I did this here either, it was
fine as is.
> 3 commits are modifying this first block in mptcp_write_options():
> - 47168d901887 (mptcp: Handle MPTCP TCP options)
> - 5e4c2881c7c9 (mptcp: Handle MP_CAPABLE options for outgoing connections)
> - 447773e0cd92 (mptcp: Create SUBFLOW socket for incoming connections)
>
> The first one introduces this block (with "OPTION_MPTCP_MPC_SYNACK").
> The second one removes "OPTION_MPTCP_MPC_SYNACK" condition.
> The third one re-adds "OPTION_MPTCP_MPC_SYNACK".
>
> Should we not introduce "OPTION_MPTCP_MPC_SYNACK" condition only at the
> 3rd patch and keep:
>
> else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
>
> for clarity purposes?
Yes, use of the OPTION_MPTCP_MPC_SYNACK condition should be added by the
"incoming connections" commit. A long time ago I split a single commit into
the current "incoming" and "outgoing" commits, and did not get this part quite
clean enough.
Peter.
>
> It's a detail but it is blocking me to know how to apply this patch
> correctly and avoid this add/remove/re-add :)
>
> Cheers,
> Matt
>
> > *ptr++ = htonl((TCPOPT_MPTCP << 24) | (len << 16) |
> > (MPTCPOPT_MP_CAPABLE << 12) |
> >
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [MPTCP] [PATCH 1/2] mptcp: reduce number of pr_debug() calls.
@ 2019-06-11 20:14 Matthieu Baerts
0 siblings, 0 replies; 4+ messages in thread
From: Matthieu Baerts @ 2019-06-11 20:14 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 5334 bytes --]
Hi Peter,
On 11/06/2019 19:17, Peter Krystad wrote:
>
> See my responses inline:
>
> On Tue, 2019-06-11 at 13:48 +0200, Matthieu Baerts wrote:
>> Hi Peter,
>>
>> On 08/06/2019 02:40, Peter Krystad wrote:
>>> squashto: Handle MPTCP TCP options
>>
>> Thank you for the new patch!
>>
>> I have two questions, please see below.
>>
>>> Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
>>> ---
>>> net/mptcp/options.c | 33 +++++++++++++++++----------------
>>> 1 file changed, 17 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/net/mptcp/options.c b/net/mptcp/options.c
>>> index 1bee4a267fd8..cad1702323a3 100644
>>> --- a/net/mptcp/options.c
>>> +++ b/net/mptcp/options.c
>>> @@ -13,7 +13,7 @@
>>> void mptcp_parse_option(const unsigned char *ptr, int opsize,
>>> struct tcp_options_received *opt_rx)
>>> {
>>> - struct mptcp_options_received *mp_opt;
>>> + struct mptcp_options_received *mp_opt = &opt_rx->mptcp;
>>> u8 subtype = *ptr >> 4;
>>> int expected_opsize;
>>>
>>> @@ -29,25 +29,29 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
>>> opsize != TCPOLEN_MPTCP_MPC_SYNACK)
>>> break;
>>>
>>> - pr_debug("MP_CAPABLE");
>>> - opt_rx->mptcp.version = *ptr++ & MPTCPOPT_VERSION_MASK;
>>> - if (opt_rx->mptcp.version != 0)
>>> + mp_opt->version = *ptr++ & MPTCPOPT_VERSION_MASK;
>>> + if (mp_opt->version != 0)
>>> break;
>>>
>>> - pr_debug("flags=%02x", *ptr);
>>> - opt_rx->mptcp.flags = *ptr++;
>>> - if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA1) ||
>>> + mp_opt->flags = *ptr++;
>>> + if (!((opt_rx->mptcp.flags & MPTCP_CAP_FLAG_MASK) ==
>>> + MPTCP_CAP_HMAC_SHA1) ||
>>> (opt_rx->mptcp.flags & MPTCP_CAP_EXTENSIBILITY))
>>> break;
>>
>> detail: could we use "mp_opt->flags" here instead of
>> "opt_rx->mptcp.flags" used twice here above.
>
> Sure.
>
>>>
>>> - opt_rx->mptcp.mp_capable = 1;
>>> - opt_rx->mptcp.sndr_key = get_unaligned_be64(ptr);
>>> - pr_debug("sndr_key=%llu", opt_rx->mptcp.sndr_key);
>>> + mp_opt->mp_capable = 1;
>>> + mp_opt->sndr_key = get_unaligned_be64(ptr);
>>> ptr += 8;
>>> +
>>> if (opsize == TCPOLEN_MPTCP_MPC_SYNACK) {
>>> - opt_rx->mptcp.rcvr_key = get_unaligned_be64(ptr);
>>> - pr_debug("rcvr_key=%llu", opt_rx->mptcp.rcvr_key);
>>> + mp_opt->rcvr_key = get_unaligned_be64(ptr);
>>> ptr += 8;
>>> + pr_debug("MP_CAPABLE flags=%x, sndr=%llu, rcvr=%llu",
>>> + mp_opt->flags, mp_opt->sndr_key,
>>> + mp_opt->rcvr_key);
>>> + } else {
>>> + pr_debug("MP_CAPABLE flags=%x, sndr=%llu",
>>> + mp_opt->flags, mp_opt->sndr_key);
>>> }
>>> break;
>>>
>>> @@ -83,7 +87,6 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
>>> */
>>> case MPTCPOPT_DSS:
>>> pr_debug("DSS");
>>> - mp_opt = &opt_rx->mptcp;
>>> mp_opt->dss = 1;
>>> ptr++;
>>>
>>> @@ -399,10 +402,8 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
>>>
>>> if (OPTION_MPTCP_MPC_SYN & opts->suboptions)
>>> len = TCPOLEN_MPTCP_MPC_SYN;
>>> - else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
>>> - len = TCPOLEN_MPTCP_MPC_SYNACK;
>>> else
>>> - len = TCPOLEN_MPTCP_MPC_ACK;
>>> + len = TCPOLEN_MPTCP_MPC_SYNACK;
>>
>> I am not sure to follow why you did this change. It doesn't seem to be
>> related to the pr_debug() calls. Are you doing that because
>> TCPOLEN_MPTCP_MPC_ACK == TCPOLEN_MPTCP_MPC_SYNACK == 20?
>
> I'll pull this out of the patch, not sure why I did this here either, it was
> fine as is.
Thank you for this new patch!
>> 3 commits are modifying this first block in mptcp_write_options():
>> - 47168d901887 (mptcp: Handle MPTCP TCP options)
>> - 5e4c2881c7c9 (mptcp: Handle MP_CAPABLE options for outgoing connections)
>> - 447773e0cd92 (mptcp: Create SUBFLOW socket for incoming connections)
>>
>> The first one introduces this block (with "OPTION_MPTCP_MPC_SYNACK").
>> The second one removes "OPTION_MPTCP_MPC_SYNACK" condition.
>> The third one re-adds "OPTION_MPTCP_MPC_SYNACK".
>>
>> Should we not introduce "OPTION_MPTCP_MPC_SYNACK" condition only at the
>> 3rd patch and keep:
>>
>> else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
>>
>> for clarity purposes?
>
> Yes, use of the OPTION_MPTCP_MPC_SYNACK condition should be added by the
> "incoming connections" commit. A long time ago I split a single commit into
> the current "incoming" and "outgoing" commits, and did not get this part quite
> clean enough.
Thank you for this explanation!
I just cleaned that!
- f1eea07b5639: clean "mptcp: Handle MPTCP TCP options"
- no signed-off modified for this
- 3a58fe749160..6614ebdd54b7: result: the code is still the same as before
Cheers,
Matt
> Peter.
>
>
>>
>> It's a detail but it is blocking me to know how to apply this patch
>> correctly and avoid this add/remove/re-add :)
>>
>> Cheers,
>> Matt
>>
>>> *ptr++ = htonl((TCPOPT_MPTCP << 24) | (len << 16) |
>>> (MPTCPOPT_MP_CAPABLE << 12) |
>>>
>
--
Matthieu Baerts | R&D Engineer
matthieu.baerts(a)tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-06-11 20:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-08 0:40 [MPTCP] [PATCH 1/2] mptcp: reduce number of pr_debug() calls Peter Krystad
-- strict thread matches above, loose matches on Subject: below --
2019-06-11 11:48 Matthieu Baerts
2019-06-11 17:17 Peter Krystad
2019-06-11 20:14 Matthieu Baerts
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.