jdev - 2020-01-25

  1. Neustradamus has joined
  2. pulkomandy has left
  3. pulkomandy has joined
  4. kikuchiyo has left
  5. kikuchiyo has joined
  6. goffi has left
  7. kikuchiyo has left
  8. paul has left
  9. kikuchiyo has joined
  10. kikuchiyo has left
  11. sonny has joined
  12. asterix has left
  13. asterix has joined
  14. sonny has left
  15. kikuchiyo has joined
  16. debacle has left
  17. asterix has left
  18. kikuchiyo has left
  19. sonny has joined
  20. Neustradamus has left
  21. sonny has left
  22. Neustradamus has joined
  23. kikuchiyo has joined
  24. sonny has joined
  25. kikuchiyo has left
  26. kikuchiyo has joined
  27. sonny has left
  28. sonny has joined
  29. kikuchiyo has left
  30. kikuchiyo has joined
  31. kikuchiyo has left
  32. strar has left
  33. strar has joined
  34. strar has left
  35. strar has joined
  36. sonny has left
  37. sonny has joined
  38. sonny has left
  39. kikuchiyo has joined
  40. kikuchiyo has left
  41. kikuchiyo has joined
  42. sonny has joined
  43. kikuchiyo has left
  44. kikuchiyo has joined
  45. paul has joined
  46. kikuchiyo has left
  47. kikuchiyo has joined
  48. kikuchiyo has left
  49. sonny has left
  50. sonny has joined
  51. lovetox has joined
  52. sonny has left
  53. sonny has joined
  54. lovetox has left
  55. lovetox has joined
  56. paul has left
  57. sonny has left
  58. sonny has joined
  59. kikuchiyo has joined
  60. kikuchiyo has left
  61. sonny has left
  62. sonny has joined
  63. Guus I've never touched the functionality. It was put in by Jive, at the time. I think we used it with Nimbuzz, at the time. Must've been 2006 or something. I never get questions around it though.
  64. lovetox has left
  65. lovetox has joined
  66. paul has joined
  67. kikuchiyo has joined
  68. lovetox has left
  69. sonny has left
  70. kikuchiyo has left
  71. lovetox has joined
  72. lovetox has left
  73. sonny has joined
  74. lovetox has joined
  75. Jannie has joined
  76. Jannie https://bit.ly/DateMeDaddy
  77. Jannie has left
  78. lovetox has left
  79. kikuchiyo has joined
  80. kikuchiyo has left
  81. asterix has joined
  82. pulkomandy has left
  83. kikuchiyo has joined
  84. pulkomandy has joined
  85. asterix has left
  86. asterix has joined
  87. kikuchiyo has left
  88. sonny has left
  89. pulkomandy has left
  90. flow IIRC ejabberd also supports extended stanza addressing and MAXS makes use of it
  91. pulkomandy has joined
  92. sonny has joined
  93. defanor-tmp has joined
  94. defanor-tmp Hello. Slightly off-topic, but I'm failing to join this room using my regular client (currently using the web interface on xmpp.org), apparently my server fails to connect to muc.xmpp.org (; is it just me, or a common issue? And I've only tried that after failing to subscribe to the jdev mailing list (HTTP 403 there), is it also a common issue?
  95. sonny has left
  96. pulkomandy has left
  97. MattJ defanor-tmp: hi
  98. MattJ Not a common issue, pretty much everyone here is joined from their own server
  99. defanor-tmp Is the correct address? I failed to connect there directly from my computer (different network/ISP/country) too.
  100. MattJ I can check jdev subscription is working later
  101. MattJ Not sure of the IP (I'm currently on my phone so can't easily check DNS)
  102. defanor-tmp And netcat from the server also says that connection times out.
  103. MattJ Oh, 5269? Pretty sure that's the wrong port at least
  104. defanor-tmp Thanks, I'll try to investigate why that happens then. It's Prosody that picks it.
  105. defanor-tmp "dig srv _xmpp-server._tcp.muc.xmpp.org" says "_xmpp-server._tcp.muc.xmpp.org. 900 IN SRV 1 1 9269 xmpp.xmpp.org."
  106. MattJ Prosody would always look up the SRV first, and would only use 5269 by default if that fails to resolve
  107. MattJ Debug logs from Prosody would help
  108. defanor-tmp Hrm, though not from the server. Apparently an issue with DNS there, Prosody is what I'm using.
  109. defanor has joined
  110. asterix has left
  111. asterix has joined
  112. defanor It was a DNS issue indeed, the server tried to use ISP's DNS instead of a local one. Which for some reason didn't serve SRV records, and somehow Prosody didn't pick it up from alternative DNS servers (which do serve those).
  113. defanor-tmp has left
  114. lovetox has joined
  115. defanor And the on-topic question I had is about reusable XMPP client implementations. I keep looking for relatively complete (in the "advanced client" compliance suite sense) libraries providing C API, implementing XMPP correctly, and embeddable into a program's main loop (instead of using their own or, say, glib's), but not finding much. I also keep wondering whether it's viable to implement it in a way that would allow to define the core and
  116. defanor each XEP separately (in the hope to achieve a relatively clean/maintainable implementation): apparently it can be (and sometimes is) mostly achieved using some kinds of hooks on stanza (and other depth-1 element) sending and retrieval, but it still wouldn't suffice for the "direct TLS" XEP (and possibly some others). Are there known attempts to do that, and/or is it known to be futile?
  117. lovetox i would not do that
  118. lovetox there are XEPs that make sense as its own module pluginable etc
  119. lovetox but others absolutely not
  120. lovetox like 0368
  121. lovetox nobody will want to disable that
  122. defanor Indeed, that's the "direct TLS" one I've mentioned. It made me to think of hooks on all the I/O actions instead of just XML element sending/retrieval, but then it'd probably be a mess of its own.
  123. paul has left
  124. lovetox i just rewritten a library
  125. lovetox and most clients would want the library to pass the domain, and the library should connect and do everything on its own
  126. lovetox there are still many things to consider
  127. MattJ I also agree with that (having worked on a number of libraries)
  128. MattJ The way XEPs are split does not necessarily match the ideal split in a library
  129. jonas’ as a library author: don’t make the low level stuff plugins
  130. jonas’ it’s a terrible choice which only leads to heartache. instead, make your core modular so that people who want to experiment with low-level stuff (like '386 or compression or something) can easily do so in their own fork
  131. jonas’ 99% of users won’t want to do this
  132. jonas’ they just need additional payloads for standard elements -> make *that* easy
  133. lovetox - DNS resolution and connection priority (suprisingly complicated) - Happy eyeballs - Proxy Support - Other connection method support (e.g. Websocket) - DIRECT TLS, START TLS, Unencrypted - Support for Client certificates - Support for functioning with non- valid server certificates and thats just out of my head, and thats all *before* you send a single stanza
  134. defanor I see, thanks. I'm not writing a library though, since it seems rather wrong to add yet another one, given that there's quite a few already. Yet finding it puzzling that there's nothing in sight that could be reusable from arbitrary languages via C FFI, complete, and hookable to an external main loop (say, glib's/GTK's, libev's, or whatever the program using that library would want to use). Am I missing something, and/or does such
  135. defanor flexibility seem like a bad idea?
  136. jonas’ defanor, I guess the C libraries could be made to be usable that way
  137. jonas’ I forgot the name of the library used by profanity, but it’s in C
  138. jonas’ howevre, working with XML and text in C is a PITA, so nobody wants to do that
  139. jonas’ and people prefer to write an idiomatic library in whatever more high-level language
  140. defanor libstrophe, but IIRC profanity struggles to introduce even XEP-0198 for years with it
  141. jonas’ which makes sense to me -- a native library is more likely to be idiomatic and useful for the language ecosystem either way
  142. pulkomandy has joined
  143. jonas’ oh and yeah, libraries created before the widespread use of '198 are likely to be in pain (looking at you, libpurple)
  144. jonas’ '198 is one of the things you absolutely don’t want in a plugin
  145. MattJ Yeah, I used to use (and contribute to) libstrophe
  146. defanor i've added 0198 into libpurple more than an year ago, but it's still not released
  147. jonas’ it’s hard enough to get right even when having full access to the stack’s internals
  148. MattJ jonas’: FWIW I've implemented it in a plugin on the client and server side, I don't think it's that bad
  149. paul has joined
  150. lovetox defanor, 0198 its not "hard" or "complicated"
  151. jonas’ MattJ, mod_smacks isn’t that bad? ;)
  152. lovetox but a library should have that in mind when written
  153. lovetox otherwise it gets almost impossible if you have bad luck
  154. sonny has joined
  155. flow > lovetox> defanor, 0198 its not "hard" or "complicated" I am not sure i'd put it that way given that most implementations of xep198 ran into the same set of issues at first
  156. defanor Yes, that's what also seems awkward about relying on core modifications to implement XEPs.
  157. MattJ jonas’: mod_smacks has issues (but it works), I don't think they necessarily stem from it being a plugin
  158. Holger The hard thing about 0198 is counting!
  159. jonas’ counting the right things
  160. MattJ I disagree, we haven't had a counting bug for a very long time
  161. Holger "1 stanza", "2 stanzas", "3 stanzas", "oh wait let's do something else" ... "2-and-a-half stanzas" ... "damn how many stanzas have I seen again I'm lost!"
  162. MattJ The XEP says what to count and (now) when counters get reset
  163. flow yep, the xep198 clarifications that where added likely helped to improve the situation
  164. MattJ How do you get distracted during stanzas_received++? :)
  165. Holger Threads and stuff.
  166. Holger No idea actually :-)
  167. Holger I'm just not sure I've ever seen an implementation that got it right from start. And I think at least ChatSecure is still borked.
  168. sonny has left
  169. MattJ We did have bugs in the early days, but again I don't see that they were caused by it being a plugin
  170. flow I am not sure if what holger described actually borks the implementations, but it sure was/is identifying the point where to reset the counter and start counting
  171. flow MattJ, same
  172. MattJ I think the main reason it shouldn't be a plugin is for the library maintainer's sanity
  173. Holger flow: That was one multiple problems I've seem implementations running into, and it's good this one has been clarified in the XEP, yes.
  174. Holger *one of
  175. MattJ It's hard to ensure you have the right plugin API and all the plugins interact correctly
  176. Holger But e.g. both ejabberd and Conversations were running into threading foo that was unrelated to "when to start counting", initially.
  177. MattJ Threads are the root of all evil
  178. jonas’ MattJ, one thing which went "wrong" in aioxmpp was that a stanza which caused an exception during processing would not be counted
  179. jonas’ MattJ, one thing which went "wrong" in aioxmpp was that a stanza which caused an exception which terminated the stream (really bad) during processing would not be counted
  180. jonas’ this would cause the stream to reconnect and resume
  181. jonas’ causing a fun tight reconnect loop
  182. Holger MattJ: Yeah.
  183. jonas’ admittedly, many problems at play here, but still.
  184. Holger jonas': Exactly, stuff like that.
  185. asterix has left
  186. jonas’ (reconnect loop because the stanza would be re-received during resumption)
  187. MattJ jonas’: I'd argue that not counting a stanza you haven't processed is sensible from a data loss perspective
  188. rion has left
  189. rion has joined
  190. jonas’ MattJ, define "have not processed" please
  191. asterix has joined
  192. MattJ In Prosody we are moving 198 to core, it's my ideal that we wouldn't back until the stanza is committed to storage or delivered, for example
  193. MattJ Not sure we'll achieve that, it's Hard
  194. jonas’ if I auto reply with <service-unavailable/>, is that "processed"?
  195. MattJ Sure
  196. jonas’ if I reply with (I don’t recall what we do) because of a deserialiser error, is that "processed"?
  197. jonas’ because that’s exactly what (should’ve) happened in the above example (that the deserialiser error broke the XMLStream instead of properly being handled was a different issue)
  198. MattJ If you reply of course it's processed
  199. jonas’ (scrolling through `git log aioxmpp/stream.py`)
  200. jonas’ MattJ, I mean, what you say makes sense, but it’s hard to get that into code right from the beginning
  201. jonas’ there are dragons and nasal demons very close due to fun race conditions (even without threads)
  202. jonas’ maybe race condition isn’t the right term, but edge case is.
  203. paul has left
  204. jonas’ https://github.com/horazont/aioxmpp/commit/f9af3cb485e9b6d7bc0d76d10e919aa76e822872 that’s the one
  205. jonas’ oh, no, that’s a different one
  206. jonas’ that was when parsing errors didn’t even propagate to the SM implementation
  207. jonas’ finding the right place to count "stanzas" wasn’t easy, and it took more than one iteration
  208. pulkomandy has left
  209. lovetox has left
  210. pulkomandy has joined
  211. lovetox has joined
  212. lovetox what impl get wrong mostly is not how to count
  213. lovetox is when to start
  214. lovetox and its not when you receive the first stanza
  215. asterix has left
  216. asterix has joined
  217. lovetox its also not after the server sent you <enabled>
  218. lovetox which probably is the most common pitfall
  219. jonas’ what?
  220. jonas’ I’m pretty sure it is
  221. jonas’ I’m pretty sure you start to count inbound after you received <enabled/>, and outbound after you sent <enable/>
  222. jonas’ which is the only way to make this reliable
  223. Alex has left
  224. Alex has joined
  225. pulkomandy has left
  226. larma has left
  227. pulkomandy has joined
  228. asterix has left
  229. asterix has joined
  230. larma has joined
  231. paul has joined
  232. lovetox has left
  233. kikuchiyo has joined
  234. larma has left
  235. larma has joined
  236. kikuchiyo has left
  237. flow jonas’, probably lovetax was talking about counting outbound stanzas
  238. flow jonas’, probably lovetox was talking about counting outbound stanzas
  239. jonas’ flow, I got confused by "its not when you receive the first stanza", sounds like inbound to me
  240. asterix has left
  241. asterix has joined
  242. sonny has joined
  243. pulkomandy has left
  244. pulkomandy has joined
  245. sonny has left
  246. sonny has joined
  247. asterix has left
  248. asterix has joined
  249. sonny has left
  250. asterix has left
  251. asterix has joined
  252. pulkomandy has left
  253. pulkomandy has joined
  254. goffi has joined
  255. asterix has left
  256. asterix has joined
  257. debacle has joined
  258. neroam728 has joined
  259. neroam728 has left
  260. paul has left
  261. paul has joined
  262. strar has left
  263. strar has joined
  264. futuresky202 has joined
  265. futuresky202 has left
  266. sonny has joined
  267. kikuchiyo has joined
  268. asterix has left
  269. asterix has joined
  270. sonny has left
  271. pulkomandy has left
  272. pulkomandy has joined
  273. asterix has left
  274. asterix has joined
  275. sonny has joined
  276. asterix has left
  277. asterix has joined
  278. goffi has left
  279. goffi has joined
  280. goffi has left
  281. goffi has joined
  282. pulkomandy has left
  283. asterix has left
  284. asterix has joined
  285. asterix has left
  286. asterix has joined
  287. pulkomandy has joined
  288. debacle has left
  289. Zash has left
  290. Zash has joined
  291. sonny has left
  292. pulkomandy has left
  293. pulkomandy has joined
  294. sonny has joined
  295. kikuchiyo has left
  296. Neustradamus has left
  297. Neustradamus has joined
  298. Neustradamus has left
  299. Neustradamus has joined
  300. Hrithik has joined
  301. Hrithik has left
  302. hrithik has joined
  303. hrithik Guys i need your help
  304. hrithik .setXmppDomain("admin@") .setPort(5280) .setHost("") .setResource("Rooster")
  305. hrithik when connecting with client it showing error as (client not connected to server message not sent ) how to resolve it?
  306. jonas’ what library is that even?
  307. hrithik smack library
  308. jonas’ java?
  309. hrithik yes
  310. jonas’ flow, ^
  311. jonas’ though one thing which stands out right away is that using bare IP addresses is asking for trouble.
  312. Zash and a nodepart passed to something called set domain
  313. Zash and the standard bosh port
  314. jonas’ that’s probably not good either
  315. Zash and also everything
  316. hrithik DomainBareJid domainname = JidCreate.domainBareFrom(""); XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder() .setXmppDomain("admin@") .setPort(5280) .setHost("") .setResource("Rooster")
  317. hrithik i have my server in another system
  318. hrithik how to set connection with server and client(mobile)
  319. pulkomandy has left
  320. pulkomandy has joined
  321. hrithik has left
  322. Neustradamus has left
  323. Neustradamus has joined
  324. asterix has left
  325. asterix has joined
  326. sonny has left
  327. asterix has left
  328. asterix has joined
  329. hrithik has joined
  330. hrithik has left
  331. Neustradamus has left
  332. sonny has joined
  333. Neustradamus has joined
  334. bhaveshsgupta has joined
  335. sonny has left
  336. pulkomandy has left
  337. bhaveshsgupta has left
  338. bhaveshsgupta has joined
  339. pulkomandy has joined
  340. pulkomandy has left
  341. bhaveshsgupta has left
  342. pulkomandy has joined
  343. sonny has joined
  344. bhaveshsgupta has joined
  345. sonny has left
  346. pulkomandy has left
  347. pulkomandy has joined
  348. bhaveshsgupta has left
  349. bhaveshsgupta has joined
  350. Neustradamus has left
  351. pulkomandy has left
  352. pulkomandy has joined
  353. sonny has joined
  354. bhaveshsgupta has left
  355. Neustradamus has joined
  356. bhaveshsgupta has joined
  357. lovetox has joined
  358. larma has left
  359. larma has joined
  360. kikuchiyo has joined
  361. lovetox has left
  362. lovetox has joined
  363. lovetox yeah jonas’ but thats counter to most of other XMPP flows
  364. lovetox normally you send a IQ get, receive a set, then something happens
  365. lovetox or you negotiate something with, <xxx> and get back <succeeded>
  366. lovetox etc
  367. lovetox and thats probably the first intention when implementing smacks
  368. lovetox we enable, wait for response <enabled> then we start doing our thing
  369. sonny has left
  370. asterix has left
  371. asterix has joined
  372. bhaveshsgupta has left
  373. bhaveshsgupta has joined
  374. asterix has left
  375. asterix has joined
  376. sonny has joined
  377. asterix has left
  378. asterix has joined
  379. asterix has left
  380. debacle has joined
  381. asterix has joined
  382. Neustradamus has left
  383. pulkomandy has left
  384. pulkomandy has joined
  385. Neustradamus has joined
  386. Neustradamus has left
  387. Neustradamus has joined
  388. asterix has left
  389. asterix has joined
  390. pulkomandy has left
  391. sonny has left
  392. pulkomandy has joined
  393. bhaveshsgupta has left
  394. bhaveshsgupta has joined
  395. asterix has left
  396. asterix has joined
  397. strar has left
  398. strar has joined
  399. bhaveshsgupta has left
  400. bhaveshsgupta has joined
  401. Zash has left
  402. Zash has joined
  403. sonny has joined
  404. bhaveshsgupta has left
  405. bhaveshsgupta has joined
  406. sonny has left
  407. bhaveshsgupta has left
  408. bhaveshsgupta has joined
  409. paul has left
  410. pulkomandy has left
  411. pulkomandy has joined
  412. bhaveshsgupta has left
  413. bhaveshsgupta has joined
  414. goffi has left
  415. pulkomandy has left
  416. bhaveshsgupta has left
  417. bhaveshsgupta has joined
  418. pulkomandy has joined
  419. xmppnoob has joined
  420. xmppnoob hi everyone. not sure if this is the right place for the questions i have, but maybe you can give me some pointers. i'm trying to build an xmpp client for my organization (web and mobile), on mobile i'm using smack for android which is great (haven't started ios yet...). on web, my search has led me to strophe library, which sadly i coudn't even compile (dirs and files unexistent) and xmpp.js, (node-xmpp rewrite) which i'm currently testing, the basic demo covers connection, send and receive messages, pretty useful, but i'm struggling on finding documentation on some other topics (roster management, file transfer, etc.), do you know and recommend some other library?
  421. pulkomandy has left
  422. pulkomandy has joined
  423. actupper has left
  424. MattJ Hi xmppnoob
  425. MattJ Take a look at converse.js <https://conversejs.org>
  426. MattJ strophe.js is generally a low-level library, so there is a lot of DIY involved, though it does have a bunch of plugins that handle some tasks for you
  427. MattJ converse.js is a more featured client on top of it, which handles lots more stuff, and is easily customizable/embeddable
  428. bhaveshsgupta has left
  429. MattJ Also if you're working on clients, take a look at https://docs.modernxmpp.org/client/protocol/ which has a bunch of relevant notes
  430. sonny has joined
  431. bhaveshsgupta has joined
  432. xmppnoob thanks MattJ, i'm a little confused about conversejs, it is a client or a library?
  433. MattJ It's primarily a client, but it has an API that you can use to control/customize it with your own code
  434. pulkomandy has left
  435. pulkomandy has joined
  436. actupper has joined
  437. xmppnoob great! i'll give it a try
  438. sonny has left
  439. lovetox has left
  440. paul has joined
  441. bhaveshsgupta has left
  442. bhaveshsgupta has joined
  443. asterix has left
  444. bhaveshsgupta has left
  445. bhaveshsgupta has joined
  446. bhaveshsgupta has left
  447. bhaveshsgupta has joined