Thursday, 2015-01-15

*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has quit IRC (Ping timeout: 246 seconds)00:16
*** lanceball is now known as lance|afk00:20
*** cemerick <cemerick!> has joined #immutant01:31
*** cemerick <cemerick!> has quit IRC (Ping timeout: 240 seconds)01:42
*** burper <burper!> has joined #immutant02:57
*** burper <burper!> has left #immutant02:57
*** cemerick <cemerick!> has joined #immutant03:09
*** cemerick <cemerick!> has quit IRC (Ping timeout: 244 seconds)04:47
*** jcrossley3 is now known as jcrossley3-away05:03
*** galderz <galderz!~galder@redhat/jboss/galderz> has joined #immutant07:11
*** dm3 <dm3!> has joined #immutant07:20
*** je <je!> has joined #immutant07:37
*** je <je!> has quit IRC (Ping timeout: 276 seconds)07:47
*** je <je!~je@> has joined #immutant07:59
*** kschrader <kschrader!uid41175@gateway/web/> has quit IRC (Quit: Connection closed for inactivity)08:05
*** marianoguerra <marianoguerra!> has joined #immutant08:06
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has joined #immutant08:06
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has quit IRC (Ping timeout: 244 seconds)08:24
*** dm3 <dm3!> has quit IRC (Remote host closed the connection)08:34
*** dm3 <dm3!> has joined #immutant08:34
*** dm3 <dm3!> has quit IRC (Ping timeout: 240 seconds)08:38
*** qwerty_nor <qwerty_nor!~Thunderbi@> has joined #immutant08:45
*** qwerty_nor <qwerty_nor!~Thunderbi@> has quit IRC (Ping timeout: 264 seconds)08:51
*** dm3 <dm3!> has joined #immutant09:04
*** marianoguerra <marianoguerra!~marianogu@> has joined #immutant09:28
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has joined #immutant09:28
*** galderz <galderz!~galder@redhat/jboss/galderz> has quit IRC (Quit: Leaving)09:34
*** cemerick <cemerick!> has joined #immutant11:18
*** qwerty_nor <qwerty_nor!~Thunderbi@> has joined #immutant11:27
*** mgoldmann|away is now known as mgoldmann11:30
*** bbrowning_away is now known as bbrowning13:18
*** galderz <galderz!~galder@redhat/jboss/galderz> has joined #immutant13:21
*** bobmcw <bobmcw!~bobmcw@> has joined #immutant13:39
*** bobmcw <bobmcw!~bobmcw@> has quit IRC (Changing host)13:39
*** bobmcw <bobmcw!~bobmcw@redhat/jboss/bobmcw> has joined #immutant13:39
*** jcrossley3-away is now known as jcrossley313:40
jcrossley3tcrawley-away: i have some stupid questions for you upon your unawayness13:49
*** conan <conan!> has quit IRC (Quit: Computer has gone to sleep.)13:58
*** conan <conan!> has joined #immutant13:59
*** conan <conan!> has quit IRC (Client Quit)14:01
*** conan <conan!> has joined #immutant14:03
*** kschrader <kschrader!uid41175@gateway/web/> has joined #immutant14:22
*** lance|afk is now known as lanceball14:55
*** tcrawley-away is now known as tcrawley15:00
jcrossley3is there no good reason for a stream to at least partially implement a handshake?15:09
jcrossley3the multi-arity on-open makes me a little nervous15:09
tcrawleywhat if the Channel protocol provided a handshake fn, which returns nil or an impl of WebsocketHandshake?15:11
jcrossley3better, but still only useful during on-open, right? i guess a ws could return a valid hs at open, and nil otherwise?15:13
jcrossley3i wonder what happens if you try and save it off for later use15:14
jcrossley3my guess is ka-bloo-ie15:14
tcrawleytrue. hmm. yeah, providing it only at open is possible15:14
tcrawleybut it would be a bad idea to save it15:14
tcrawleybut we can't prevent that, no matter how we provide it15:15
jcrossley3we could immutafy it, at a price, possibly high.15:15
jcrossley3i don't want to do that15:15
jcrossley3actually, a user could immutafy it, if he chooses to pay that price.15:16
tcrawleydefine "immutafy" here15:16
jcrossley3if you wanted to store off say, the headers, for later use.15:17
tcrawleyI think the user understanding the model would solve that "don't modify the headers after data is sent, since it has no meaning"15:18
jcrossley3(swap! save-for-later assoc :headers (headers handshake))15:18
jcrossley3or any other attr of the handshake15:18
jcrossley3tcrawley: isn't there some possibly useful handshake-ish data for a stream?15:20
tcrawleyI was just thinking about that!15:20
jcrossley3maybe headers for a nothing-sent-yet non-chunked stream?15:20
tcrawleyeverything but user-principal/user-in-role? would be available15:20
jcrossley3why not those guys?15:21
tcrawleybut all that is also available in the request map, which is available when registering the callbacks15:21
tcrawleyI guess the user stuff is available as well, we just don't expose it in our RingRequest proto15:22
tcrawleymaybe we should15:22
jcrossley3yeah. i kinda thought we did15:24
jcrossley3we do, indirectly15:24
jcrossley3for servlets anyway15:24
jcrossley3i'm not sure it makes sense for undertow15:25
tcrawleyyeah, probably not15:26
tcrawleymy preference would be to only expose the handshake for websockets, since that's the only way to get the data for ws15:27
tcrawleyinstead of having two ways to get it for httpstreams15:27
jcrossley3which two ways?15:27
tcrawleythe request map that is available when you call as-channel, and handshake15:28
tcrawleyactually, both are available for websockets as well15:28
jcrossley3are you arguing for multi-arity on-open or Channel.handshake?15:28
tcrawleywould (defn handler [request] (as-channel request {:on-open (fn [ch] ;; look at request here, even for ws)})) be enough?15:29
tcrawleymaybe I'm arguing for no handshake15:29
jcrossley3how do i see the request?15:30
jcrossley32nd arg to on-open?15:30
jcrossley3instead of hs?15:30
jcrossley3oh, i guess it's in scope anyway15:31
jcrossley3is it?15:31
tcrawleythe request is in the closure when :on-open is defined, yeah15:31
jcrossley3so this leads me to another question15:31
tcrawley(defn handler [request] (as-channel request {:on-open (fn [ch] (println request))}))15:31
jcrossley3would it be possible for as-channel to return a fn?15:32
tcrawleysure, though that would complicate the result map. what would that fn do when invoked?15:33
jcrossley3assoc the :body/:status to the result of the handler passed to it :)15:35
jcrossley3i was hoping it could solve my "endware" problem with wrap-websocket15:35
tcrawleydo you want to keep wrap-websocket?15:40
jcrossley3not necessarily15:40
jcrossley3especially not if as-channel can do what it does, but better15:41
jcrossley3but i'd probably s/as-/with-/15:41
tcrawleyit was with- for a while, but in clojure, that generally means a binding form15:42
jcrossley3sorry, i mean wrap15:42
tcrawleywrap-channel. hmm. maybe so15:42
tcrawleythe as- implies a change - the request becomes a channel15:43
tcrawley-= THIS MESSAGE NOT LOGGED =-15:43
*** astoon <astoon!~astoon@> has joined #immutant15:52
*** bbrowning is now known as bbrowning_away16:04
*** cemerick <cemerick!> has quit IRC (Ping timeout: 246 seconds)16:09
*** audaxion <audaxion!~siksia@unaffiliated/siksia> has quit IRC (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)16:10
*** astoon <astoon!~astoon@> has quit IRC (Quit: astoon)16:32
*** astoon <astoon!~astoon@> has joined #immutant16:34
*** lanceball is now known as lance|afk16:48
*** galderz <galderz!~galder@redhat/jboss/galderz> has quit IRC (Quit: Leaving)16:55
*** bbrowning_away is now known as bbrowning17:01
*** dm3_ <dm3_!> has joined #immutant17:03
*** dm3 <dm3!> has quit IRC (Ping timeout: 265 seconds)17:06
*** dm3_ <dm3_!> has quit IRC (Ping timeout: 244 seconds)17:07
jcrossley3tcrawley: is there a reliable way to identify a request as either streaming or not?17:07
*** astoon <astoon!~astoon@> has quit IRC (Quit: astoon)17:09
*** audaxion <audaxion!~siksia@unaffiliated/siksia> has joined #immutant17:14
*** mgoldmann is now known as mgoldmann|away17:29
*** cap10morgan <cap10morgan!> has joined #immutant17:35
jcrossley3tcrawley: i have things working with as-channel returning a fn17:49
jcrossley3i think i prefer it17:50
jcrossley3i like obviating wrap-websocket17:50
jcrossley3does that mess up your sente integration?17:55
*** cemerick <cemerick!> has joined #immutant17:56
tcrawleyjcrossley3: identify a request as streaming? the request isn't streaming until the ring response is returned. you can only identify a websocket upgrade vs a ring request17:58
tcrawleyit's still unclear to me what that fn you return does, so I don't know if it effects sente17:58
jcrossley3right, i got past that17:58
tcrawleycan you gist an example?17:58
tcrawleyis that the def of as-channel? how would I use that?18:01
jcrossley3tcrawley: yes18:01
tcrawley(web/run (as-channel))?18:01
tcrawley(web/run (as-channel fallback-handler))?18:01
tcrawleywith callbacks in the calls18:02
jcrossley3pass run any of those vars18:02
jcrossley3and currently, i just have wrap-websocket delegating to as-channel18:02
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has quit IRC (Ping timeout: 255 seconds)18:04
tcrawleylet me take a look at sente18:04
jcrossley3i'm seeing errors in the container tests, but undertow tests all pass18:05
tcrawleyfailures, or just errors in the log?18:05
jcrossley3test failures18:05
tcrawleywith your changes, how do I access the request map?18:06
tcrawleyfor sente, I'll need access to the request map inside :on-open18:06
tcrawleyalso, how do I add additional headers to the response map?18:07
jcrossley3you can do that in on-open, right?18:08
tcrawleywith the old as-channel, I could do (defn handler [req] (update-in (as-channel req ...) [:headers] assoc "foo" "bar")), same for session18:09
tcrawleywhat do I modify in on-open to do that?18:09
jcrossley3was there a test doing that i missed? :)18:09
tcrawleythe handshake?18:09
tcrawleynot yet, no. the tests are pretty sparse18:09
tcrawleythe feature is far from complete :)18:09
jcrossley3why does sente access the request map in on-open?18:10
tcrawleyto get params, to see if it's a websocket request (the on-open switches on that)18:12
tcrawleybut you would also want to access it to get session info18:12
jcrossley3so yeah, if your handshake is non-nil, it's a ws request18:13
tcrawleymy hope was for users' code to act like everything was ring until the last second18:13
tcrawleybut if as-channel is the handler, they can't really do that18:14
jcrossley3and the session can be obtained from that non-nil handshake18:14
tcrawleymy example above of assoc'ing headers. accessing the ring request map inside the callbacks. accessing the request map before calling as-channel18:15
tcrawleynone of that is possible if as-channel returns the ring handler18:15
tcrawleywhat's the advantage of as-channel returning a fn?18:15
jcrossley3getting rid of wrap-websocket18:16
tcrawleycan't we get rid of wrap-websocket anyway, and point you to using as-channel from within a handler?18:17
jcrossley3i'm a little stuck on as-channel returning a response map, though18:18
tcrawleyif you want a route that is just ws, you'd do (fn [req] (if (:websocket? req) (as-channel ...) {:status 404}))18:18
tcrawleywhat do you mean by stuck? you don't like it?18:18
jcrossley3like's a strong word18:19
jcrossley3it's a little incongruous, i guess18:19
tcrawleyit's congruous with ring though18:20
jcrossley3do you think it will be more obvious to users that its response should be returned than hk's with-channel macro?18:20
tcrawleyanother option is to return the channel, and you'd be responsible for doing {:status 200 :body (as-channel ...)}18:20
tcrawley"Returns a ring response map, at least the :body of which *must* be returned in the response map from the calling ring handler" is the current doc. that could be worded better, probably, but what other mechanism can we use to show the user that it should be returned other than docs and examples?18:22
tcrawleyif as-channel returns the channel instead, you could grab the channel at that point and store it, but couldn't use it until :on-open was called18:24
tcrawleywhich you can also do when a request-map is returned, just by accessing :body18:25
jcrossley3you're going to be mad if i say anything about docs18:26
tcrawleyno, sally forth my friend18:27
jcrossley3as always, my preference will be for the api to speak for itself18:27
tcrawleyis the docstring not part of the api?18:28
jcrossley3this is you getting mad18:28
jcrossley3but no, to answer your question :)18:28
tcrawleyI'm not mad, I'm trying to understand your POV18:29
jcrossley3it's the same POV you've always known18:29
tcrawleybut I still don't understand it :)18:29
jcrossley3i do like the ability to query the request from the callbacks18:30
*** cemerick <cemerick!> has quit IRC (Ping timeout: 245 seconds)18:30
tcrawleyif you just saw (as-channel request {:keys [on-open on-close on-message on-error], :as callbacks}), how would you know how to use it18:30
tcrawleywhat does it do? what are the arities of those callbacks?18:30
*** lance|afk is now known as lanceball18:32
jcrossley3there are existing conventions in the world for ring and async already. if we're going to introduce another one, it better be better than those to justify the mental cost of introducing yet another convention.18:32
jcrossley3if introducing a macro to make the request available works, doing so might require less docs18:33
tcrawleywhat's the current convention for async in the clojure world? and don't say core.async :)18:33
jcrossley3the hk with-channel macro, for one18:33
jcrossley3aleph's manifold stuff maybe?18:34
tcrawleywhich we're very similar to, currently18:34
tcrawleyaleph works by returning a streamable thing as :body18:34
tcrawleyI'd argue that what we have now is understandable by ring users, and is very close to what http-kit and aleph do18:35
*** je <je!~je@> has quit IRC (Quit: Leaving)18:59
*** jcrossley3 is now known as jcrossley3-away19:12
*** je <je!~je@> has joined #immutant19:25
*** je <je!~je@> has quit IRC (Client Quit)19:28
*** je <je!> has joined #immutant19:30
*** je <je!> has joined #immutant19:30
*** je <je!> has quit IRC (Ping timeout: 255 seconds)19:35
*** marianoguerra <marianoguerra!~marianogu@> has joined #immutant19:49
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has joined #immutant19:49
*** dm3 <dm3!> has joined #immutant20:01
*** je <je!> has joined #immutant20:01
*** cemerick <cemerick!> has joined #immutant20:32
*** jcrossley3-away is now known as jcrossley320:35
*** cemerick <cemerick!> has quit IRC (Ping timeout: 264 seconds)20:42
*** dm3 <dm3!> has quit IRC (Remote host closed the connection)20:59
*** qwerty_nor <qwerty_nor!~Thunderbi@> has quit IRC (Ping timeout: 240 seconds)20:59
*** dm3 <dm3!> has joined #immutant20:59
*** je_ <je_!> has joined #immutant21:02
*** je <je!> has quit IRC (Quit: Leaving)21:03
*** je_ <je_!> has quit IRC (Client Quit)21:03
*** je <je!> has joined #immutant21:04
*** je is now known as je_21:04
*** dm3 <dm3!> has quit IRC (Ping timeout: 256 seconds)21:04
*** astoon <astoon!~astoon@> has joined #immutant21:04
*** je_ <je_!> has quit IRC (Client Quit)21:04
*** je <je!> has joined #immutant21:04
*** astoon <astoon!~astoon@> has quit IRC (Client Quit)21:05
*** irsol <irsol!~irsol@unaffiliated/contempt> has quit IRC (Ping timeout: 245 seconds)21:23
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has quit IRC (Ping timeout: 240 seconds)21:48
*** marianoguerra <marianoguerra!> has joined #immutant21:50
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has joined #immutant21:50
*** tcrawley is now known as tcrawley-away21:59
*** lanceball is now known as lance|afk22:11
*** bbrowning is now known as bbrowning_away22:27
*** irsol <irsol!~irsol@unaffiliated/contempt> has joined #immutant22:34
*** statonjr_ <statonjr_!> has joined #immutant22:45
*** jballanc <jballanc!~jballanc@> has quit IRC (*.net *.split)22:52
*** dselph_____ <dselph_____!sid28058@gateway/web/> has quit IRC (*.net *.split)22:52
*** mgaare <mgaare!~quassel@> has quit IRC (*.net *.split)22:52
*** qmx <qmx!~qmx@redhat/jboss/qmx> has quit IRC (*.net *.split)22:52
*** glitch100 <glitch100!> has quit IRC (*.net *.split)22:52
*** lance|afk <lance|afk!~lanceball@redhat/jboss/lanceball> has quit IRC (*.net *.split)22:52
*** bbrowning_away <bbrowning_away!~bbrowning@redhat/jboss/bbrowning> has quit IRC (*.net *.split)22:52
*** hiredman <hiredman!> has quit IRC (*.net *.split)22:52
*** jbossbot <jbossbot!~JBossBot@redhat/jbossbot> has quit IRC (*.net *.split)22:52
*** jodaro <jodaro!sid5995@gateway/web/> has quit IRC (*.net *.split)22:52
*** charliekilo <charliekilo!charliekil@2600:3c00::f03c:91ff:fe56:b738> has quit IRC (*.net *.split)22:52
*** gws <gws!~gws@2601:7:680:45b:f66d:4ff:fe04:3329> has quit IRC (*.net *.split)22:52
*** borkdude <borkdude!~borkdude@2a02:2308:20:0:216:3eff:fe5f:4c0b> has quit IRC (*.net *.split)22:52
*** deadghost <deadghost!~deadghost@2001:41d0:1:b6d8::1> has quit IRC (*.net *.split)22:52
*** arnaudbos_away <arnaudbos_away!> has quit IRC (*.net *.split)22:52
*** kungi <kungi!> has quit IRC (*.net *.split)22:52
*** kschrader <kschrader!uid41175@gateway/web/> has quit IRC (*.net *.split)22:52
*** moquist <moquist!moquist@2600:3c03::f03c:91ff:fe50:bfa5> has quit IRC (*.net *.split)22:52
*** dzimm_ <dzimm_!sid35094@gateway/web/> has quit IRC (*.net *.split)22:52
*** itruslove_ <itruslove_!> has quit IRC (*.net *.split)22:52
*** ivan` <ivan`!~ivan@unaffiliated/ivan/x-000001> has quit IRC (*.net *.split)22:52
*** justinmcp_ <justinmcp_!~quassel@> has quit IRC (*.net *.split)22:52
*** audaxion <audaxion!~siksia@unaffiliated/siksia> has quit IRC (*.net *.split)22:52
*** jcrossley3 <jcrossley3!~user@redhat/jboss/jc3> has quit IRC (*.net *.split)22:52
*** michaniskin_ <michaniskin_!sid28312@gateway/web/> has quit IRC (*.net *.split)22:52
*** mgoldmann|away <mgoldmann|away!~mgoldmann@redhat/jboss/mgoldmann> has quit IRC (*.net *.split)22:52
*** proddbot <proddbot!~irclj@> has quit IRC (*.net *.split)22:52
*** tcrawley-away <tcrawley-away!~tcrawley@redhat/jboss/tcrawley> has quit IRC (*.net *.split)22:52
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has quit IRC (*.net *.split)22:52
*** conan <conan!> has quit IRC (*.net *.split)22:52
*** abstractj <abstractj!~abstractj@redhat/jboss/abstractj> has quit IRC (*.net *.split)22:52
*** jwm_ <jwm_!~jwm@> has quit IRC (*.net *.split)22:52
*** irsol <irsol!~irsol@unaffiliated/contempt> has quit IRC (*.net *.split)22:52
*** cap10morgan <cap10morgan!> has quit IRC (*.net *.split)22:52
*** bobmcw <bobmcw!~bobmcw@redhat/jboss/bobmcw> has quit IRC (*.net *.split)22:52
*** DomKM <DomKM!uid23709@gateway/web/> has quit IRC (*.net *.split)22:52
*** je <je!> has quit IRC (*.net *.split)22:52
*** nwjsmith <nwjsmith!sid16761@gateway/web/> has quit IRC (*.net *.split)22:52
*** statonjr <statonjr!> has quit IRC (*.net *.split)22:52
*** projectodd-ci <projectodd-ci!> has quit IRC (*.net *.split)22:52
*** qmx <qmx!~qmx@redhat/jboss/qmx> has joined #immutant22:53
*** lanceball <lanceball!~lanceball@redhat/jboss/lanceball> has joined #immutant22:53
*** jballanc <jballanc!~jballanc@> has joined #immutant22:53
*** mgaare_ <mgaare_!~quassel@> has joined #immutant22:53
*** dselph_____ <dselph_____!sid28058@gateway/web/> has joined #immutant22:53
*** irsol <irsol!~irsol@unaffiliated/contempt> has joined #immutant22:53
*** marianoguerra <marianoguerra!~marianogu@emesene/grandpa/marianoguerra> has joined #immutant22:53
*** cap10morgan <cap10morgan!> has joined #immutant22:53
*** audaxion <audaxion!~siksia@unaffiliated/siksia> has joined #immutant22:53
*** kschrader <kschrader!uid41175@gateway/web/> has joined #immutant22:53
*** conan <conan!> has joined #immutant22:53
*** bobmcw <bobmcw!~bobmcw@redhat/jboss/bobmcw> has joined #immutant22:53
*** moquist <moquist!moquist@2600:3c03::f03c:91ff:fe50:bfa5> has joined #immutant22:53
*** DomKM <DomKM!uid23709@gateway/web/> has joined #immutant22:53
*** jcrossley3 <jcrossley3!~user@redhat/jboss/jc3> has joined #immutant22:53
*** jodaro <jodaro!sid5995@gateway/web/> has joined #immutant22:53
*** charliekilo <charliekilo!charliekil@2600:3c00::f03c:91ff:fe56:b738> has joined #immutant22:53
*** gws <gws!~gws@2601:7:680:45b:f66d:4ff:fe04:3329> has joined #immutant22:53
*** borkdude <borkdude!~borkdude@2a02:2308:20:0:216:3eff:fe5f:4c0b> has joined #immutant22:53
*** michaniskin_ <michaniskin_!sid28312@gateway/web/> has joined #immutant22:53
*** deadghost <deadghost!~deadghost@2001:41d0:1:b6d8::1> has joined #immutant22:53
*** kungi <kungi!> has joined #immutant22:53
*** arnaudbos_away <arnaudbos_away!> has joined #immutant22:53
*** justinmcp_ <justinmcp_!~quassel@> has joined #immutant22:53
*** ivan` <ivan`!~ivan@unaffiliated/ivan/x-000001> has joined #immutant22:53
*** itruslove_ <itruslove_!> has joined #immutant22:53
*** dzimm_ <dzimm_!sid35094@gateway/web/> has joined #immutant22:53
*** proddbot <proddbot!~irclj@> has joined #immutant22:53
*** tcrawley-away <tcrawley-away!~tcrawley@redhat/jboss/tcrawley> has joined #immutant22:53
*** mgoldmann|away <mgoldmann|away!~mgoldmann@redhat/jboss/mgoldmann> has joined #immutant22:53
*** bbrowning_away <bbrowning_away!~bbrowning@redhat/jboss/bbrowning> has joined #immutant22:53
*** jwm_ <jwm_!~jwm@> has joined #immutant22:53
*** abstractj <abstractj!~abstractj@redhat/jboss/abstractj> has joined #immutant22:53
*** jbossbot <jbossbot!~JBossBot@redhat/jbossbot> has joined #immutant22:53
*** hiredman <hiredman!> has joined #immutant22:53
*** jodaro <jodaro!sid5995@gateway/web/> has quit IRC (*.net *.split)22:54
*** charliekilo <charliekilo!charliekil@2600:3c00::f03c:91ff:fe56:b738> has quit IRC (*.net *.split)22:54
*** gws <gws!~gws@2601:7:680:45b:f66d:4ff:fe04:3329> has quit IRC (*.net *.split)22:54
*** borkdude <borkdude!~borkdude@2a02:2308:20:0:216:3eff:fe5f:4c0b> has quit IRC (*.net *.split)22:54
*** deadghost <deadghost!~deadghost@2001:41d0:1:b6d8::1> has quit IRC (*.net *.split)22:54
*** arnaudbo1_away <arnaudbo1_away!> has joined #immutant22:54

Generated by 2.9.2 by Marius Gedminas - find it at!