Hi,

Here's the summary of the previous community meeting.

---

COMMUNITY MEETING

Place: #openvpn-devel on irc.freenode.net
List-Post: openvpn-devel@lists.sourceforge.net
Date: Thursday, 24th Jun 2010
Time: 18:00 UTC

Next meeting next week, same place, same time. Your local meeting time
is easy to check from services such as

<http://www.timeanddate.com/worldclock>

or with

$ date -u


SUMMARY

Discussed the bridge-start and bridge-stop scripts available on
openvpn.net. They had been discussed in an earlier meeting, too:

<http://article.gmane.org/gmane.network.openvpn.devel/3720>

Decided to proceed by first documenting to the Wiki what bridging is and
how it works, then creating sample scripts and sending them for review.
Waldner volunteered for this job.

--

Discussed an old patch, "Exclude ping and control packets from activity":

<http://article.gmane.org/gmane.network.openvpn.devel/3690>

This issue had been discussed in an earlier meeting:

<http://article.gmane.org/gmane.network.openvpn.devel/3673>

In this earlier meeting we decided to ask our users if they had managed
to configure proper byte limit for --inactivity so that the ping traffic
would be effectively ignored (without side-effects). Unfortunately
nobody replied:

<http://article.gmane.org/gmane.network.openvpn.devel/3676/>

Waldner will test the patch thoroughly to ensure that it never causes
ping packets to be dropped. After this the patch can be merged into
"testing" tree.

--

Discussed the possibility of using the Trac wiki as a staging area for
official OpenVPN documentation. This would mean that documentation would
be created in the following fashion:

- documentation would be created/modified in the wiki
- when an article is deemed good enough, it would become part of the
official documentation on openvpn.net

This would allow community to participate in the documentation effort
much more easily. It would also increase the overall quality of official
documentation. Everybody agreed that this is a good idea.

A similar arrangement is in use in the Puppet project:

<http://docs.puppetlabs.com>
<http://projects.puppetlabs.com/projects/puppet/wiki>


---

Full chatlog as an attachment

-- 
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock





(21:05:07) mattock: ...
(21:07:05) mattock: dazo should be attending
(21:07:09) mattock: as should james
(21:07:20) dazo [~dazo@nat/redhat/x-pfdongmzktsdnycy] è entrato nel canale.
(21:07:23) #openvpn-devel: modalità (+o dazo) da ChanServ
(21:07:25) mattock: hi dazo!
(21:07:42) dazo: mattock:  Hi :)
(21:07:55) mattock: I think I'll mail James... the guys at the company are 
_really_ busy releasing the next version of Access Server, so...
(21:08:03) mattock: I hope he could ACK the one patch we have in the queue
(21:08:18) waldner: heh, I hope it too :)
(21:08:22) dazo: yeah, that sounds good
(21:08:31) mattock: do you guys have anything else in mind for today?
(21:08:57) mattock: btw. community.openvpn.net is up again, there hav been lots 
of rekeying going on lately
(21:09:15) waldner: yes, I have some questions about the fixing of the bridge 
script on the website which we talked about some time ago
(21:09:32) dazo: what's this rekeying procedure?  twice in less than 4-5 months 
is quite a lot
(21:11:48) mattock: dazo: well, it's a long story... involving new wildcard 
certs, certificate passwords etc.
(21:11:56) mattock: not sure of the exact details
(21:12:17) mattock: this should be the "final" rekeying - at least for a long 
time
(21:12:18) mattock: ;)
(21:12:36) dazo: :)
(21:12:53) dazo: I hope so too, as it's rather annoying to suddenly loose the 
community site
(21:12:54) mattock: sent mail to James
(21:13:33) mattock: waldner: perhaps we could start with your issue
(21:13:39) krzee: funny for PKI to be an issue for anything related to us ;]
(21:13:42) krzee: irony
(21:14:07) krzee: dazo, how you liking the openvpn cookbook?
(21:14:16) krzee: im sending back chapter 2 right now
(21:14:44) waldner: there is an openvpn cookbook?
(21:14:56) dazo: krzee:  I've only received chapter 1, and not really had time 
to look at it yet ... but it's coming a flight today, so I'll find some time :-P
(21:15:07) dazo: waldner:  Jan Just Keijser is writing one
(21:15:12) waldner: cool
(21:15:35) waldner: mattock: yes, we can start from that
(21:16:03) mattock: waldner: shoot :)
(21:16:27) waldner: so, the bridge-start and stop as they are are broken
(21:16:34) waldner: we already agreed on that
(21:16:39) mattock: we did
(21:16:46) waldner: but bridge-stop is "more" broken than bridge-start
(21:16:59) waldner: because it doesn't even restore the old configuration after 
deleting the bridge
(21:17:12) waldner: it jst leaves the system unconfigured
(21:17:32) waldner: now, the first step I suggest is to "fix" that
(21:17:50) waldner: eg, at least it should end by restoring what brisge-start 
undid
(21:18:22) waldner: once that is done, there are various possibilities
(21:19:03) waldner: the main problem is that (imho) using a bridge in that way 
is "wrong"
(21:19:12) waldner: ie, creating and destroying it on the fly
(21:19:36) waldner: I've always advocated permanent bridge, and just add/remove 
the tap interface when openvpn starts/stop
(21:19:41) ***dazo tend to agree
(21:20:16) mattock: I'll try to find the earlier meeting discussion
(21:20:21) waldner: so one thing to decide is: if we support the permanent 
bridge approach, then 99% of the issues are automatically solved
(21:20:25) dazo: Dynamic bridging increases the difficulty considerably, and is 
IMHO a more hackerish solution
(21:20:30) waldner: and bridge-start and bridge-stop become basically 1-2 lines 
of code
(21:20:59) waldner: (ip link set tap0 up && brctl add bro tap0, essentially)
(21:21:18) krzee: (if in linux)
(21:21:23) waldner: if, on the other hand, we want to go the dynamic bridge 
route, then there are issues
(21:21:29) waldner: krzee: yes
(21:21:35) dazo: you'd need some way to identify/tell the script which bridge 
to add/remove the tap device to/from
(21:21:48) waldner: but it's still much simpler than going the dynamic way
(21:21:59) krzee: agree
(21:22:04) dazo: +1
(21:22:11) waldner: and, the big one imho
(21:22:39) waldner: is that once you remove the IP from eth0, and you had a 
default route pointing to eth0, the default route is deleted
(21:22:44) waldner: at least under Linux
(21:23:06) waldner: so that would mean parsing the routing table to check, and 
perhaps restore routes once the bridge is created
(21:23:14) waldner: (and the reverse with bridge-stop)
(21:23:48) waldner: which look like a lot of work to be done right imho
(21:24:25) waldner: I have some ideas on how that could be done on Linux, but I 
don't know how it could be managed on other systems
(21:24:40) mattock: ok, I found the earlier discussion: 
http://article.gmane.org/gmane.network.openvpn.devel/3720
(21:24:52) vpnHelper: Title: Gmane -- Mail To News And Back Again (at 
article.gmane.org)
(21:26:34) mattock: it seems a guy named "waldner" volunteered to do some 
script hacking on 27th May ;)
(21:26:45) waldner: heh
(21:26:55) waldner: better late than never :)
(21:27:04) waldner: seriously, I've been quite busy
(21:27:19) waldner: I think I'll have some time to work on that soon
(21:27:34) waldner: and I wante to set things straight before starting
(21:27:37) mattock: no problems, take your time
(21:28:55) waldner: so to recap: fix the major brokennes of bridge-stop
(21:29:02) waldner: ah btw, that script is already Linux-specific, right?
(21:29:29) mattock: waldner: I think so, yes
(21:29:39) mattock: I don't think anything else uses the bridge-utils
(21:29:56) dazo: I think we should keep things stupidly simple.  We should not 
"rearrange" the network in our scripts when starting openvpn with bridging ... 
some preparation steps should rather be documented and presumed completed 
before people start using openvpn with bridging
(21:30:19) mattock: dazo: +1
(21:30:39) waldner: +1
(21:30:50) dazo: then we would need some clever magic in our scripts which then 
adds the TAP device to/from an already existing bridge, according to the 
distro/OS way of doing it
(21:31:01) waldner: and once that is stated, perhaps provide different scripts 
for different operating systems
(21:31:20) waldner: or, harder, a single script that detects the os and works 
everywhere
(21:31:25) waldner: yes
(21:31:29) dazo: you could identify that via a call to uname ... and then just 
call the different methods based on the uname result
(21:31:40) waldner: yes, that could be a way
(21:31:57) dazo: uname -o, might be the safest
(21:32:08) waldner: and I think it could be useful to document how to create a 
permanent bridge on the major OSs
(21:32:15) dazo: +1
(21:32:28) waldner: cool
(21:32:37) mattock: waldner: you could write the documentation to 
community.openvpn.net Wiki
(21:32:51) waldner: is it possible to use the wiki to create a draft of all 
this?
(21:32:54) waldner: :)
(21:32:57) waldner: read my mind
(21:33:00) dazo: oh yes, please do!
(21:33:02) mattock: I'm getting write access to openvpn.net next week, so I can 
put links to community.openvpn.net in place
(21:33:12) waldner: ok
(21:33:17) mattock: waldner: drafting in wiki is a good idea
(21:34:00) mattock: waldner: do you think you have a good idea how to proceed?
(21:34:06) waldner: excellent
(21:34:09) mattock: great!
(21:34:17) waldner: yes
(21:34:21) waldner: first, fix bridge-stop
(21:34:34) waldner: then start a wiki page explaining what bridging is and how 
it works
(21:34:47) waldner: and why using a permanent bridge should be preferred
(21:34:55) waldner: then, sample code etc.
(21:35:01) waldner: and review by people, of course
(21:35:07) krzee: [krzee@xxx ~]$ uname -o
(21:35:07) krzee: uname: illegal option -- o
(21:35:07) krzee: usage: uname [-aimnprsv]
(21:35:07) krzee: not the safest ;)
(21:35:25) krzee: [krzee@xxx ~]$ uname
(21:35:25) krzee: FreeBSD
(21:35:29) dazo: waldner:  if krzee/ecrist's wiki got something on the routing 
stuff, please copy that or refer to that wiki ... easier for #openvpn to 
provide a consistent help then
(21:35:45) dazo: krzee:  good point
(21:35:53) dazo: waldner:  just uname it is then :)
(21:35:59) waldner: yes
(21:36:15) waldner: I think they have documents about routing, iroute etc. but 
not sure about bridging
(21:36:16) mattock: yep, "uname" gives "Linux" on Ubuntu 9.10
(21:36:21) ***dazo honestly thought that uname was standardised on all 
platforms .... but obviously not
(21:36:26) waldner: krzee: ?
(21:36:33) waldner: yes, uname alnoe should be fine
(21:36:38) waldner: *alone
(21:36:46) krzee: imo my routing document is the best document online about 
openvpn routing
(21:37:02) krzee: http://www.secure-computing.net/wiki/index.php/OpenVPN/Routing
(21:37:02) vpnHelper: Title: OpenVPN/Routing - Secure Computing Wiki (at 
www.secure-computing.net)
(21:37:11) krzee: welcome to mirror it or link to it anywhere you like
(21:37:17) ***dazo agrees
(21:37:17) waldner: yes, but is there something about bridging I could refer to 
in the wiki page?
(21:37:35) krzee: there is, but its up to you to decide if its worthy
(21:37:43) waldner: ok, I'll have a look and see
(21:37:51) krzee: i had no part in anything bridge related on the wiki
(21:38:01) krzee: i avoid bridging like its infectious
(21:38:31) waldner: well, but people ask for it, and since openvpn provides it, 
then somehow it should be documented
(21:38:40) krzee: of course i agree
(21:38:45) waldner: (and I like it, btw :))
(21:38:54) krzee: i just personally dont do it, support it, or document it
(21:39:01) waldner: I've used it to tunnel home and get IPv6 at work :)
(21:39:06) krzee: i expect those of you who like it to do so ;)
(21:39:29) waldner: sure
(21:39:55) krzee: (that was not directed at anyone specific, more of a general 
comment)
(21:39:57) mattock: james does not seem to be coming... any other developers 
who could ACK/discuss this: 
http://article.gmane.org/gmane.network.openvpn.devel/3690
(21:40:04) vpnHelper: Title: Gmane -- Mail To News And Back Again (at 
article.gmane.org)
(21:40:18) waldner: that's a very simple one, really (or should be)
(21:40:28) waldner: it didn't seem to break anything in my tests
(21:40:57) mattock: dazo: you had some concerns you'd like to discuss?
(21:41:15) mattock: ...regarding this patch
(21:41:33) waldner: IIRC even dazo was unsure, he had asked James
(21:41:37) dazo: mattock:  yeah, it's an older patch from waldner IIRC ... I'm 
uncertain if it is a good approach to reset a byte counter
(21:41:49) dazo: and I've not heard anything from James at all
(21:41:55) waldner: it's not a byte counter
(21:42:00) waldner: it's a length field
(21:42:04) jamesyonan [~jamesy...@user-3cf8d1e.dsl.mindspring.com] è entrato 
nel canale.
(21:42:07) waldner: \o/
(21:42:11) dazo: yeah, that was what I meant
(21:42:16) dazo: talking about the sun ;-)
(21:42:21) waldner: dazo: other parts of the code do so already
(21:42:37) waldner: but ok, I'm not 100% sure of course
(21:42:41) dazo: yeah, I just want to be sure we don't break anything by doing 
that here
(21:42:45) waldner: yep
(21:42:46) mattock: hi james!
(21:42:49) jamesyonan: hi guys
(21:42:49) waldner: agreed
(21:42:56) waldner: hi
(21:43:05) dazo: jamesyonan:  hi!  Perfect timing, as we need some of your 
knowledge on one issue :)
(21:43:08) mattock: jamesyonan: we're now discussing the patch I mentioned: 
http://article.gmane.org/gmane.network.openvpn.devel/3690
(21:43:14) vpnHelper: Title: Gmane -- Mail To News And Back Again (at 
article.gmane.org)
(21:43:19) dazo: which we just began to discuss :)
(21:43:46) waldner: basically internal pings are counted as activity, thus 
defeating --inactive
(21:44:02) dazo: jamesyonan:  I'm wondering if it is the proper way to do it by 
doing c->c2.buf.len = 0; in ping.c, check_ping_send_dowork()
(21:44:41) waldner: ISTR the receiving code does that as well
(21:44:51) waldner: if length is 0, it's ignored
(21:45:02) waldner: and that is purposely set to 0 somewhere earlier
(21:45:25) jamesyonan: but why not count the ping packets as traffic but then 
set a threshold on --inactive ?
(21:45:53) waldner: I think on a logical level, pings are not "traffic"
(21:45:57) jamesyonan: because there are other packets that may be 
automatically generated that should not constitute activity
(21:46:03) waldner: yes, SSL negotiation packets
(21:46:10) waldner: and those were counted as well
(21:46:16) waldner: which imho is not correct either
(21:46:19) jamesyonan: not only that, but tunnel packets
(21:46:40) jamesyonan: with layer 2 tunneling, there will be broadcasts and ARPs
(21:47:16) waldner: well, I'd say those are more "user traffic" than openvpn's 
administrative traffic anyway
(21:47:43) waldner: how would you suggest to go about it then?
(21:48:06) jamesyonan: so the idea with --inactive is that you don't want to 
have to write an algorithm to determine what constitutes traffic, so you use 
the heuristic of traffic above a given threshold
(21:48:14) krzee: i agree layer2 chatter is user traffic
(21:48:58) waldner: jamesyonan: but that has proven problematic when --inactive 
is used together with --ping
(21:49:12) waldner: because effectively --inactive was never kicking in
(21:49:17) dazo: yeah, and pings from inside openvpn, which only goes between 
two openvpn processes are not user traffic
(21:49:21) waldner: even with no user traffic
(21:49:35) mattock: so how many "internal" types of traffic do we have which 
should not be counted?
(21:49:50) waldner: good question
(21:50:27) dazo: waldner:  jamesyonan suggested to have some clever algorithm 
which would give a more sensible second --inactive argument, iirc ... 
--inactive can take two arguments
(21:50:55) waldner: isn't that what we're doing?
(21:51:16) waldner: if you set the second argument, ping packets are counted 
towards that
(21:51:27) waldner: with my patch, they're not
(21:52:22) waldner: so the risk is that, depending on how often ping happens, 
the counted bytes are never less than that second argument in the given period 
of time
(21:52:51) dazo: waldner:  you have a different approach here, where pings are 
not counted at all .... and jamesyonan suggested earlier to have a expected 
bytes counter for --inactive
(21:52:53) waldner: (if they're counted, I mean)
(21:53:05) waldner: dazo: there is already such a counter
(21:53:28) waldner: or I don't get what you mean
(21:53:45) dazo: waldner:  I mean that the default value would be more clever 
calculated and not a fixed value as it is now
(21:54:02) jamesyonan: on the patch, are you sure that "Set length to 0, so it 
won't be counted as activity" won't simply cancel the ping?
(21:54:21) waldner: jamesyonan: I checked and pings were sent
(21:54:21) waldner: dazo: no it's not fixed
(21:54:40) waldner: you can pass whatever value you want as second argument to 
--inactive
(21:55:25) dazo: waldner:  yeah, but without giving this argument .... it is a 
default fixed  value, it's this default value we wanted to look at making more 
clever
(21:55:25) waldner: no, without that argument, it's just a timer which, again, 
is reset every time a ping is sent
(21:55:34) waldner: so "n" seconds of inactivity are never detected
(21:56:28) jamesyonan: I'm concerned that there might be cases where this patch 
could would disable the outgoing ping, for example if crypto is disabled.
(21:56:28) waldner: jamesyonan: do you want me to perform more testing?
(21:56:28) waldner: I can surely do that
(21:56:28) dazo: waldner:  0 is also a default value ;-)
(21:56:28) jamesyonan: sure
(21:56:28) waldner: ok
(21:57:03) waldner: dazo: ok well, you win :)
(21:57:08) mattock: ok, so we've have had cries for help about this: 
http://article.gmane.org/gmane.network.openvpn.devel/3676/
(21:57:13) vpnHelper: Title: Gmane -- Mail To News And Back Again (at 
article.gmane.org)
(21:57:46) mattock: and this is the meeting where this was discussed last time: 
http://article.gmane.org/gmane.network.openvpn.devel/3673
(21:57:47) waldner: isn't that what we were just discussing?
(21:57:49) dazo: that's what started this discussion and which lead to 
waldner's suggested patch
(21:57:52) vpnHelper: Title: Gmane -- Mail To News And Back Again (at 
article.gmane.org)
(21:58:18) mattock: waldner: yep
(21:58:33) mattock: I was sure we discussed this same thing earlier, just could 
not find out when
(21:58:37) mattock: now I did ;)
(21:58:43) waldner: ah ok
(21:58:57) mattock: just for the reference
(21:59:27) mattock: ok, so waldner will do some more testing
(21:59:37) waldner: yes
(21:59:45) mattock: and if everything works, the patch can be ACK'd, right?
(21:59:48) dazo: waldner:  if you can document your testing routine, with 
configs preferably ... and some test results ... we can get more people 
evaluating the test scenario and to test it themselves to see if their findings 
match our expectations
(22:00:03) waldner: I'll perhaps try different combinations of ciphers/no 
ciphers, also with certificates or with shared keys
(22:00:56) mattock: you can create a wiki page or Trac task
(22:00:58) dazo: if that passes, we can give it an ACK
(22:01:01) waldner: dazo: agreed, will do
(22:01:01) dazo: waldner:  that's my thought exactly :)  .... and if you can 
share those configs .... that'll help documenting how we've tested it, which 
might make jamesyonan calmer as well :)
(22:01:01) waldner: sure, no problem
(22:01:07) dazo: waldner:  you probably also know there are certificates and 
keys for testing already available in the source tree ....
(22:01:15) waldner: yes
(22:01:30) waldner: I do use them often when testing in fact
(22:01:34) ***dazo just wanted to be 120% sure :)
(22:01:38) dazo: perfect :)
(22:01:42) waldner: but in any case, I also have my set of certs and keys
(22:01:47) waldner: many, even
(22:02:18) jamesyonan: I'm happy with the patch, as long as we can prove that 
it will never cause the ping packet to be dropped.
(22:02:26) waldner: cool
(22:02:31) ***dazo agrees with that
(22:02:36) mattock: waldner: have you registered to Trac already?
(22:02:39) waldner: +1
(22:02:50) waldner: mattock: mot yet
(22:02:53) mattock: or rather, our "Community Services Platform" ;)
(22:03:09) waldner: *not
(22:03:14) waldner: will do in the next days
(22:03:23) mattock: ok, remember to read the first paragraph on the Trac main 
page first
(22:03:24) waldner: I think a trac task is more suited
(22:03:33) mattock: agreed
(22:03:36) waldner: let's leave pages for real docs
(22:03:42) mattock: "Bayesian spam prevention is being teached and is not 
active yet. This causes all edits to being rejected as spam, unless you define 
your real name and email address in Trac-specific preferences. These are not 
the same as those used during registration."
(22:03:45) waldner: ok
(22:04:17) mattock: actually, the Bayesian filter has been trained enough 
(unless it needs to eat spam too)
(22:04:25) mattock: haven't had time to check how to activate it
(22:04:33) waldner: ok, will do
(22:04:33) krzee: "teached" lol
(22:04:56) mattock: krzee: I guess "trained" would be more suitable ;)
(22:05:09) mattock: I'd fix that if my internet connection was faster (over 
5kbps) ;)
(22:05:30) mattock: anything else for today?
(22:05:32) krzee: taught
(22:05:51) mattock: oh yes, of course
(22:05:52) krzee: oh i have one
(22:06:09) krzee: something i just learned from JJK's cookbook
(22:06:28) krzee: but i have never seen documented (correct me if im wrong)
(22:06:43) krzee: windows paths can use forward slashes instead of needing 
double backslashes
(22:07:16) krzee: that would go well in the howto in the sample configs where 
it talks about windows paths (and anywhere else that talks about win paths)
(22:08:26) dazo: good point
(22:08:51) krzee: i had to go test it when i read about it, i had never seen 
that before (and i think ive read all docs)
(22:09:10) mattock: regarding documentation in general... the "Puppet" project 
has a system where all(?) documentation is written into a Wiki first. Then, as 
it matures, it's moved to "official" (=mostly read-only) documentation in their 
website
(22:09:21) mattock: perhaps we could use the same approach for our documentation
(22:09:37) waldner: +1
(22:09:48) krzee: +1!
(22:09:49) mattock: that way community could take part in writing the 
documentation, but you'd still have some guarantee that the official 
documentation is good
(22:10:08) mattock: =not full of misinformation
(22:10:17) dazo: mattock:  +1
(22:10:41) waldner: yes, community review too
(22:10:51) mattock: +1
(22:11:38) krzee: can that happen for the FAQ/howto as well?
(22:11:44) krzee: (not a big deal, but if it can... why not)
(22:11:51) dazo: +1
(22:12:14) mattock: I'll have to consult others about what to do with existing 
documentation
(22:12:27) mattock: I'm pretty sure nobody has anything against this plan
(22:12:56) waldner: yes agreed
(22:12:56) waldner: the docs on the official site look kind of stale-ish
(22:12:56) waldner: imho
(22:13:06) mattock: yep
(22:13:11) mattock: I don't think they're updated very often
(22:13:37) mattock: there are some technical hurdles, depending on the approach 
we take
(22:13:41) mattock: but no showstoppers
(22:14:27) mattock: krzee: I should get write access to openvpn.net community 
section next week
(22:14:35) mattock: so please send me the fixes you have in mind
(22:14:41) mattock: anything else for today?
(22:15:03) mattock: or shall I go the sauna and swimming in Finland's biggest 
lake?
(22:15:06) mattock: ;)
(22:15:14) mattock: to the...
(22:15:33) krzee: im offcially jealous
(22:15:42) krzee: its hurricane season here
(22:15:48) mattock: oh, I see
(22:16:14) mattock: but at least the water is warm there ;)
(22:17:17) mattock: here it's only 18 celsius, which is pretty "warm" for a 
Finnish lake 
(22:17:21) mattock: not sure about Fahrenheits
(22:17:50) mattock: ok, so nothing else?
(22:17:58) mattock: let's call this a day then!
(22:18:13) ***dazo needs to complete packing now
(22:18:32) mattock: going back or going hiking?
(22:18:57) mattock: back to Europe I mean
(22:19:01) dazo: thanks for a great meeting again!
(22:19:07) waldner: yes, good meeting
(22:19:08) mattock: thanks everybody!
(22:19:18) mattock: see you next week!
(22:19:19) dazo: going back ... plane goes in 5-6 hours
(22:19:28) mattock: don't expect the summary until Monday
(22:19:39) waldner: have a good flight
(22:19:51) dazo: c'ya!
(22:19:51) dazo: waldner:  thx!
(22:20:04) mattock: bye!
(22:21:22) dazo: bye!
(22:21:27) waldner: bye

Reply via email to