XSF Discussion - 2022-12-03


  1. singpolyma has left

  2. singpolyma has joined

  3. emus has left

  4. Mx2 has joined

  5. emus has joined

  6. xnamed has left

  7. chipmnk has left

  8. Mx2 has left

  9. hnsr.q has joined

  10. Martin has left

  11. Martin has joined

  12. lskdjf has left

  13. chipmnk has joined

  14. neox has left

  15. neox has joined

  16. neshtaxmpp has left

  17. neshtaxmpp has joined

  18. neshtaxmpp has left

  19. neshtaxmpp has joined

  20. hnsr.q has left

  21. neshtaxmpp has left

  22. chipmnk has left

  23. neshtaxmpp has joined

  24. wurstsalat has left

  25. chipmnk has joined

  26. debacle has left

  27. singpolyma has left

  28. singpolyma has joined

  29. neox has left

  30. restive_monk has left

  31. Menel has left

  32. restive_monk has joined

  33. neox has joined

  34. gooya has left

  35. Vaulor has left

  36. kryptos has joined

  37. kryptos has left

  38. kryptos has joined

  39. kryptos has left

  40. djorz has left

  41. kryptos has joined

  42. kryptos has left

  43. kryptos has joined

  44. kryptos has left

  45. kryptos has joined

  46. kryptos has left

  47. marc0s has left

  48. marc0s has joined

  49. kryptos has joined

  50. kryptos has left

  51. kryptos has joined

  52. kryptos has left

  53. kryptos has joined

  54. kryptos has left

  55. kryptos has joined

  56. kryptos has left

  57. Vaulor has joined

  58. singpolyma has left

  59. singpolyma has joined

  60. qy has left

  61. qy has joined

  62. Half-Shot has left

  63. homebeach has left

  64. Matthew has left

  65. uhoreg has left

  66. Half-Shot has joined

  67. Matthew has joined

  68. homebeach has joined

  69. uhoreg has joined

  70. Seve has left

  71. pablo has joined

  72. gooya has joined

  73. hnsr.q has joined

  74. hnsr.q has left

  75. kryptos has joined

  76. marc0s has left

  77. marc0s has joined

  78. Vaulor has left

  79. singpolyma has left

  80. singpolyma has joined

  81. gooya has left

  82. pasdesushi has left

  83. hnsr.q has joined

  84. hnsr.q has left

  85. andrey.g has left

  86. hnsr.q has joined

  87. mjk has left

  88. hnsr.q has left

  89. pablo has left

  90. neshtaxmpp has left

  91. stp has left

  92. goffi has left

  93. singpolyma has left

  94. singpolyma has joined

  95. goffi has joined

  96. hnsr.q has joined

  97. singpolyma has left

  98. singpolyma has joined

  99. hnsr.q has left

  100. karoshi has left

  101. mjk has joined

  102. hnsr.q has joined

  103. hnsr.q has left

  104. qwestion has joined

  105. singpolyma has left

  106. singpolyma has joined

  107. vanitasvitae has left

  108. vanitasvitae has joined

  109. Steve has left

  110. Steve Kille has joined

  111. kryptos has left

  112. hnsr.q has joined

  113. hnsr.q has left

  114. eric has joined

  115. singpolyma has left

  116. singpolyma has joined

  117. Martin has left

  118. mh has joined

  119. singpolyma has left

  120. singpolyma has joined

  121. qy has left

  122. qy has joined

  123. mh has left

  124. mh has joined

  125. eric has left

  126. arc has left

  127. arc has joined

  128. atomicwatch has joined

  129. neshtaxmpp has joined

  130. hnsr.q has joined

  131. qwestion has left

  132. cheokes has joined

  133. cheokes has left

  134. cheokes has joined

  135. cheokes has left

  136. cheokes has joined

  137. cheokes has left

  138. cheokes has joined

  139. cheokes has left

  140. cheokes has joined

  141. cheokes has left

  142. cheokes has joined

  143. cheokes has left

  144. cheokes has joined

  145. cheokes has left

  146. cheokes has joined

  147. cheokes has left

  148. cheokes has joined

  149. cheokes has left

  150. cheokes has joined

  151. cheokes has left

  152. cheokes has joined

  153. cheokes has left

  154. cheokes has joined

  155. cheokes has left

  156. cheokes has joined

  157. cheokes has left

  158. cheokes has joined

  159. cheokes has left

  160. cheokes has joined

  161. cheokes has left

  162. cheokes has joined

  163. cheokes has left

  164. cheokes has joined

  165. cheokes has left

  166. cheokes has joined

  167. cheokes has left

  168. cheokes has joined

  169. cheokes has left

  170. cheokes has joined

  171. cheokes has left

  172. cheokes has joined

  173. cheokes has left

  174. cheokes has joined

  175. cheokes has left

  176. cheokes has joined

  177. cheokes has left

  178. cheokes has joined

  179. cheokes has left

  180. cheokes has joined

  181. cheokes has left

  182. cheokes has joined

  183. cheokes has left

  184. cheokes has joined

  185. cheokes has left

  186. cheokes has joined

  187. cheokes has left

  188. cheokes has joined

  189. cheokes has left

  190. cheokes has joined

  191. cheokes has left

  192. cheokes has joined

  193. cheokes has left

  194. cheokes has joined

  195. cheokes has left

  196. cheokes has joined

  197. cheokes has left

  198. cheokes has joined

  199. cheokes has left

  200. cheokes has joined

  201. cheokes has left

  202. cheokes has joined

  203. cheokes has left

  204. cheokes has joined

  205. cheokes has left

  206. Seve has joined

  207. cheokes has joined

  208. cheokes has left

  209. cheokes has joined

  210. cheokes has left

  211. cheokes has joined

  212. cheokes has left

  213. cheokes has joined

  214. cheokes has left

  215. cheokes has joined

  216. cheokes has left

  217. atomicwatch has left

  218. mh has left

  219. mh has joined

  220. atomicwatch has joined

  221. cheokes has joined

  222. cheokes has left

  223. cheokes has joined

  224. cheokes has left

  225. cheokes has joined

  226. cheokes has left

  227. cheokes has joined

  228. cheokes has left

  229. cheokes has joined

  230. cheokes has left

  231. cheokes has joined

  232. cheokes has left

  233. cheokes has joined

  234. cheokes has left

  235. raghavgururajan has joined

  236. cheokes has joined

  237. cheokes has left

  238. cheokes has joined

  239. cheokes has left

  240. cheokes has joined

  241. cheokes has left

  242. cheokes has joined

  243. cheokes has left

  244. cheokes has joined

  245. Vaulor has joined

  246. cheokes has left

  247. cheokes has joined

  248. cheokes has left

  249. cheokes has joined

  250. cheokes has left

  251. cheokes has joined

  252. cheokes has left

  253. cheokes has joined

  254. cheokes has left

  255. cheokes has joined

  256. cheokes has left

  257. cheokes has joined

  258. cheokes has left

  259. cheokes has joined

  260. cheokes has left

  261. cheokes has joined

  262. cheokes has left

  263. cheokes has joined

  264. cheokes has left

  265. cheokes has joined

  266. cheokes has left

  267. hnsr.q has left

  268. cheokes has joined

  269. cheokes has left

  270. cheokes has joined

  271. cheokes has left

  272. cheokes has joined

  273. cheokes has left

  274. cheokes has joined

  275. cheokes has left

  276. cheokes has joined

  277. cheokes has left

  278. cheokes has joined

  279. cheokes has left

  280. cheokes has joined

  281. cheokes has left

  282. cheokes has joined

  283. cheokes has left

  284. cheokes has joined

  285. cheokes has left

  286. cheokes has joined

  287. cheokes has left

  288. cheokes has joined

  289. cheokes has left

  290. cheokes has joined

  291. cheokes has left

  292. cheokes has joined

  293. cheokes has left

  294. cheokes has joined

  295. cheokes has left

  296. cheokes has joined

  297. cheokes has left

  298. cheokes has joined

  299. cheokes has left

  300. cheokes has joined

  301. cheokes has left

  302. cheokes has joined

  303. cheokes has left

  304. cheokes has joined

  305. cheokes has left

  306. cheokes has joined

  307. cheokes has left

  308. cheokes has joined

  309. cheokes has left

  310. cheokes has joined

  311. cheokes has left

  312. cheokes has joined

  313. cheokes has left

  314. atomicwatch has left

  315. cheokes has joined

  316. cheokes has left

  317. arc has left

  318. arc has joined

  319. atomicwatch has joined

  320. cheokes has joined

  321. cheokes has left

  322. cheokes has joined

  323. cheokes has left

  324. cheokes has joined

  325. cheokes has left

  326. cheokes has joined

  327. cheokes has left

  328. cheokes has joined

  329. cheokes has left

  330. cheokes has joined

  331. cheokes has left

  332. cheokes has joined

  333. hnsr.q has joined

  334. cheokes has left

  335. cheokes has joined

  336. cheokes has left

  337. cheokes has joined

  338. cheokes has left

  339. cheokes has joined

  340. cheokes has left

  341. cheokes has joined

  342. cheokes has left

  343. cheokes has joined

  344. cheokes has left

  345. cheokes has joined

  346. cheokes has left

  347. cheokes has joined

  348. cheokes has left

  349. cheokes has joined

  350. cheokes has left

  351. cheokes has joined

  352. cheokes has left

  353. cheokes has joined

  354. cheokes has left

  355. cheokes has joined

  356. cheokes has left

  357. cheokes has joined

  358. cheokes has left

  359. cheokes has joined

  360. cheokes has left

  361. cheokes has joined

  362. cheokes has left

  363. cheokes has joined

  364. cheokes has left

  365. cheokes has joined

  366. cheokes has left

  367. Tobi has joined

  368. cheokes has joined

  369. Tobi has left

  370. Tobi has joined

  371. cheokes has left

  372. cheokes has joined

  373. cheokes has left

  374. Tobias has joined

  375. cheokes has joined

  376. cheokes has left

  377. cheokes has joined

  378. cheokes has left

  379. cheokes has joined

  380. mh has left

  381. serge90 has joined

  382. mh has joined

  383. Vaulor has left

  384. mh has left

  385. mh has joined

  386. floretta has joined

  387. Vaulor has joined

  388. mh has left

  389. Mikaela has left

  390. Mikaela has joined

  391. mh has joined

  392. Yagiza has joined

  393. Yagiza has left

  394. hnsr.q has left

  395. Yagiza has joined

  396. catchy has joined

  397. arc has left

  398. arc has joined

  399. lskdjf has joined

  400. Maxence has joined

  401. atomicwatch has left

  402. mirux has joined

  403. atomicwatch has joined

  404. eric has joined

  405. eric has left

  406. hnsr.q has joined

  407. hnsr.q has left

  408. bhavy has joined

  409. Menel has joined

  410. projjalm has joined

  411. hnsr.q has joined

  412. MSavoritias (fae,ve) has joined

  413. asterix has left

  414. asterix has joined

  415. mh has left

  416. pasdesushi has joined

  417. marc0s has left

  418. marc0s has joined

  419. mh has joined

  420. marc0s has left

  421. marc0s has joined

  422. floretta has left

  423. hnsr.q has left

  424. marc0s has left

  425. marc0s has joined

  426. floretta has joined

  427. Axel has joined

  428. antranigv has joined

  429. Mario Sabatino has joined

  430. wurstsalat has joined

  431. catchy has left

  432. catchy has joined

  433. govanify has left

  434. govanify has joined

  435. hnsr.q has joined

  436. atomicwatch has left

  437. hnsr.q has left

  438. wurstsalat has left

  439. wurstsalat has joined

  440. atomicwatch has joined

  441. atomicwatch has left

  442. neshtaxmpp has left

  443. neshtaxmpp has joined

  444. mdosch has left

  445. mirux has left

  446. mirux has joined

  447. mdosch has joined

  448. atomicwatch has joined

  449. eevvoor has joined

  450. neshtaxmpp has left

  451. hnsr.q has joined

  452. atomicwatch has left

  453. neshtaxmpp has joined

  454. hnsr.q has left

  455. atomicwatch has joined

  456. atomicwatch has left

  457. marc0s has left

  458. marc0s has joined

  459. atomicwatch has joined

  460. atomicwatch has left

  461. Titi has joined

  462. atomicwatch has joined

  463. debacle has joined

  464. govanify has left

  465. govanify has joined

  466. Paganini has left

  467. hnsr.q has joined

  468. hnsr.q has left

  469. Titi has left

  470. bhavy has left

  471. bhavy has joined

  472. stp has joined

  473. Menel has left

  474. mirux has left

  475. Menel has joined

  476. mh has left

  477. stp has left

  478. mh has joined

  479. govanify has left

  480. govanify has joined

  481. karoshi has joined

  482. Tobias has left

  483. Tobias has joined

  484. Titi has joined

  485. Tobias has left

  486. Tobias has joined

  487. hnsr.q has joined

  488. mirux has joined

  489. hnsr.q has left

  490. Tobias has left

  491. Tobias has joined

  492. Tobias has left

  493. Tobias has joined

  494. Tobias has left

  495. Tobias has joined

  496. Tobias has left

  497. Tobias has joined

  498. Tobias has left

  499. Tobias has joined

  500. marc0s has left

  501. marc0s has joined

  502. Tobias has left

  503. Tobias has joined

  504. stp has joined

  505. debacle has left

  506. govanify has left

  507. govanify has joined

  508. hnsr.q has joined

  509. govanify has left

  510. govanify has joined

  511. xengineering has left

  512. catchy has left

  513. catchy has joined

  514. xengineering has joined

  515. asterix has left

  516. stp has left

  517. asterix has joined

  518. antranigv has left

  519. govanify has left

  520. govanify has joined

  521. asterix has left

  522. asterix has joined

  523. asterix has left

  524. neshtaxmpp has left

  525. asterix has joined

  526. atomicwatch has left

  527. atomicwatch has joined

  528. neshtaxmpp has joined

  529. papatutuwawa has joined

  530. atomicwatch has left

  531. atomicwatch has joined

  532. atomicwatch has left

  533. hnsr.q has left

  534. krit has left

  535. atomicwatch has joined

  536. xnamed has joined

  537. Martin has joined

  538. hnsr.q has joined

  539. atomicwatch has left

  540. MSavoritias (fae,ve) has left

  541. MSavoritias (fae,ve) has joined

  542. atomicwatch has joined

  543. Tobi has left

  544. Tobi has joined

  545. krit has joined

  546. Friendly Resident Cynic has left

  547. Tobias has left

  548. Tobias has joined

  549. adiaholic has left

  550. atomicwatch has left

  551. Alex has left

  552. Alex has joined

  553. atomicwatch has joined

  554. atomicwatch has left

  555. Vaulor has left

  556. arcxi has left

  557. Tobias has left

  558. Tobias has joined

  559. Tobias has left

  560. Tobias has joined

  561. Vaulor has joined

  562. debacle has joined

  563. Titi has left

  564. atomicwatch has joined

  565. goffi has left

  566. arcxi has joined

  567. goffi has joined

  568. sonny has left

  569. sonny has joined

  570. goffi has left

  571. sonny has left

  572. goffi has joined

  573. sonny has joined

  574. goffi has left

  575. Maranda has left

  576. Mjolnir Archon has left

  577. Tobias has left

  578. Tobias has joined

  579. goffi has joined

  580. atomicwatch has left

  581. goffi has left

  582. goffi has joined

  583. kryptos has joined

  584. asterix has left

  585. asterix has joined

  586. gooya has joined

  587. millesimus has left

  588. atomicwatch has joined

  589. Vaulor has left

  590. goffi has left

  591. goffi has joined

  592. khirput has left

  593. goffi has left

  594. goffi has joined

  595. millesimus has joined

  596. khirput has joined

  597. kurisu has left

  598. kurisu has joined

  599. massivebox has left

  600. brunrobe has joined

  601. Vaulor has joined

  602. goffi has left

  603. goffi has joined

  604. massivebox has joined

  605. pasdesushi has left

  606. goffi has left

  607. goffi has joined

  608. pasdesushi has joined

  609. Tobias has left

  610. Tobias has joined

  611. mh has left

  612. adiaholic has joined

  613. mh has joined

  614. Mjolnir Archon has joined

  615. kryptos has left

  616. marc0s has left

  617. marc0s has joined

  618. sonny has left

  619. sonny has joined

  620. sonny has left

  621. sonny has joined

  622. xnamed has left

  623. govanify has left

  624. govanify has joined

  625. Maranda has joined

  626. xnamed has joined

  627. kryptos has joined

  628. stp has joined

  629. rubi has left

  630. neshtaxmpp has left

  631. kryptos has left

  632. coleman has left

  633. coleman has joined

  634. neshtaxmpp has joined

  635. hnsr.q has left

  636. hnsr.q has joined

  637. Tobias has left

  638. Tobi has left

  639. millesimus has left

  640. govanify has left

  641. govanify has joined

  642. millesimus has joined

  643. Tobi has joined

  644. Tobias has joined

  645. antranigv has joined

  646. Vaulor has left

  647. Tobias has left

  648. Tobias has joined

  649. Vaulor has joined

  650. rubi has joined

  651. papatutuwawa has left

  652. Tobias has left

  653. Tobi has left

  654. govanify has left

  655. govanify has joined

  656. Tobi has joined

  657. Tobias has joined

  658. antranigv has left

  659. singpolyma has left

  660. singpolyma has joined

  661. mimi89999 has left

  662. Guus

    Does XMPP use namespaces on the stream other than 'http://etherx.jabber.org/streams' and the namespace that defines the stanzas ('jabber:client', 'jabber:server' etc)? I can think of only one, for dialback. Are there others?

  663. cheokes has left

  664. singpolyma has left

  665. singpolyma has joined

  666. singpolyma has left

  667. singpolyma has joined

  668. singpolyma has left

  669. singpolyma has joined

  670. Trung has left

  671. flow

    Guus, define on the stream? All Nonzas have their own namespace

  672. Guus

    I guess that in specialized scenarios, other (private/proprietary?) namespaces could possibly be added? I've never seen that - at least not with such namespaces being defined on the stream element.

  673. Guus

    defined as an attribute on the <stream> element.

  674. flow

    ahh, well in theory you could pre-define a ton of namespaces there

  675. Zash

    You're talking about namespace prefix declarations on the root stream?

  676. flow

    and use this as optimization when sending an element of such a namespace

  677. Trung has joined

  678. Guus

    flow/zash; yes, that's what I mean.

  679. flow

    It's one of those "XML allows it, XMPP does not explicitly forbid it, but implementations usually do not do it" things

  680. flow

    for example like namespaced attributes

  681. Guus

    That's what I was wondering. I've never _seen_ it - but does it happen in the wild. Dialback is one, I think, but is there more?

  682. flow

    I can not come up with anther example from the top of my head

  683. asterix has left

  684. Guus

    Ok, thanks.

  685. asterix has joined

  686. flow

    Guus, may I ask what the outcome of this question influences?

  687. antranigv has joined

  688. Guus

    Openfire currently discards any namespace/prefix definitions on the stream tag. This is causing some issues while refactoring our s2s code (notably around dialback). From there, I got curious.

  689. papatutuwawa has joined

  690. moparisthebest

    It's nice to be able to treat every stanza/nonza as it's own document

  691. moparisthebest

    For a lot of reasons, not the least of which is security

  692. Guus

    That's why Openfire discards the root element (after some validation). Downside is that those namespace definitions are lost.

  693. Guus

    I was kind of surprised that that hasn't caused any issues that caused people (likely: third party devs) to reach out.

  694. Zash

    I imagine most XMPP devs have been avoiding that because of implementations with custom XML parsers that are picky about the stream header, or doesn't keep ns prefixes.

  695. Daniel

    When I first started with xmpp my stock xml serializer would always put all namespace as prefixes into the stream opening element. But I quickly learned not to do that after comparing it to what I saw in the gajim xml console

  696. antranigv has left

  697. kryptos has joined

  698. kryptos has left

  699. kryptos has joined

  700. singpolyma

    Could save some bytes I expect, but probably not very many per stanza

  701. Tobias has left

  702. Tobias has joined

  703. Zash

    In some cases like XEP-0198 you could save a lot on relatively small and highly frequent elements.

  704. Link Mauve

    Zash, a stanza smaller than an ethernet frame will not reduce the size of transmission in any way.

  705. flow

    moparisthebest, you can still threat every top level stream element as its own document and still support namespace prefix definitions in the enclosing <stream/>

  706. Link Mauve

    But I plan on finishing a XEP for advertising as a server that you support this feature, which could indeed help kickstart clients to do it.

  707. flow

    moparisthebest, you can still treat every top level stream element as its own document and still support namespace prefix definitions in the enclosing <stream/>

  708. debacle has left

  709. antranigv has joined

  710. Menel has left

  711. singpolyma has left

  712. flow

    > Link Mauve> Zash, a stanza smaller than an ethernet frame will not reduce the size of transmission in any way. Huh? if you send 90 bytes payload, the ethernet frame will be 90 bytes + tcp header + ip header + ethernet header? What am I missing?

  713. marc0s has left

  714. singpolyma has joined

  715. marc0s has joined

  716. goffi has left

  717. goffi has joined

  718. mjk has left

  719. Link Mauve

    flow, whether the result is 90+some bytes or 1500 bytes the same amount of data will be transmitted.

  720. Steve Kille has left

  721. moparisthebest

    flow: only if you keep around some state, then you gotta remember when to clear it

  722. Link Mauve

    If it is 1501 bytes two frames will be transmitted, so you will have sent twice as much as 1500 bytes.

  723. Link Mauve

    moparisthebest, easy: on </stream>.

  724. flow

    moparisthebest, sure, but that's like not rocket science?

  725. Link Mauve

    (Or connection loss.)

  726. mjk has joined

  727. Guus

    Link Mauve, are you talking about MTU?

  728. Zash

    Is keeping a map of prefix→namespace that much? Think of it as HPACK maybe? ;)

  729. Link Mauve

    Guus, yes.

  730. Guus

    I always assumed that this was the _maximum_ allowed size in one data packet, but not a fixed size.

  731. antranigv has left

  732. antranigv has joined

  733. mirux has left

  734. moparisthebest

    flow: idk, it's the cause of gzip compression not being secure for instance

  735. mirux has joined

  736. Menel has joined

  737. Link Mauve

    Guus, hmm, that’s not what I got taught at uni, but now I’m starting to doubt.

  738. singpolyma has left

  739. Guus

    as in, I assume that you can sent _less_ data. Sending less data with more packets incurs overhead of packet metadata, which is why you'd want to use up as much of the MTU as you can. I did not know if _not_ doing that causes all of the 'remaining' space to be used up by explicitly sent data.

  740. singpolyma has joined

  741. flow

    moparisthebest, I think we are talking about different things here

  742. moparisthebest

    Plus you have to *not* keep anything around for WebSocket

  743. Guus

    Link Mauve: I very much am _not_ an expert here, so there is a good chance that I am very wrong.

  744. Link Mauve

    Me neither, which makes me doubt even more. :)

  745. Link Mauve

    And I don’t even know how to start to measure that, perhaps saturate a link with just-MTU size and then saturate it with as small a packet as possible, and compare the throughput?

  746. flow

    tcpdump?

  747. raghavgururajan has left

  748. flow

    besides the name, it actually captures ethernet traffic, so it shows everything down to the ethernet frame

  749. Link Mauve

    That’s one layer too high, we want physical ethernet frames.

  750. Link Mauve

    Oh?

  751. antranigv has left

  752. antranigv has joined

  753. Half-Shot has left

  754. homebeach has left

  755. Matthew has left

  756. uhoreg has left

  757. Half-Shot has joined

  758. Matthew has joined

  759. homebeach has joined

  760. uhoreg has joined

  761. flow

    so does wireshark

  762. antranigv has left

  763. antranigv has joined

  764. moparisthebest

    I'm simply saying keeping state around is always more dangerous than not keeping state around

  765. Patiga has left

  766. thilo.molitor

    Link Mauve: no, you definitely can send packets and Ethernet frames smaller than your MTU...those won't get magically filled up with padding bytes ;)

  767. Zash

    Keeping state around is what makes XMPP efficient IMO

  768. flow

    moparisthebest, I am not sure if I would agree

  769. Zash

    Creating a whole new XML parser for each message seems meh.

  770. flow

    Zash, why?

  771. Zash

    flow, don't have to say things the other end already knows (because it keeps state)

  772. thilo.molitor

    TCP will try to fill it's packets up to the MTU, but only if there is enough data waiting to be sent in its buffers...otherwise it will send smaller packets...

  773. flow

    Zash, In my case, I keep the state by synthesizing a wrapping <stream/> around the top level element before handing it to the parser

  774. singpolyma has left

  775. singpolyma has joined

  776. flow

    Zash, In my case, I keep the state by synthesizing a wrapping <stream/> around the top-level element before handing it to the parser

  777. thilo.molitor

    Monal creates one XML parser and can use any namespace prefix defined on the stream header anywhere in the stream...

  778. Zash

    we do something like that for WebSocket

  779. antranigv has left

  780. antranigv has joined

  781. antranigv has left

  782. antranigv has joined

  783. Zash

    or did we?

  784. Zash

    maybe it was BOSH

  785. thilo.molitor

    flow: why don't you use a single streaming parser and feed in data as it arrives?

  786. flow

    because denial of service attacks due the missing isolation

  787. flow

    so basically a top-level stream element is send from one entity

  788. thilo.molitor

    What missing isolation?

  789. antranigv has left

  790. flow

    if you parse multiple stream elements with the same parser, then, due the missing isolation, one entity can affect another entity

  791. raghavgururajan has joined

  792. flow

    that's the high level view of it

  793. thilo.molitor

    Isn't parsing a stream header for every incoming stanza much more overhead --> more dos potential?

  794. flow

    but maybe things will become clearer if I post the DoS in Smack that the Jitsi folks discovered

  795. Zash

    The same for all users?

  796. Zash

    Don't do that

  797. moparisthebest

    WebSocket with each stanza being explicitly framed is a much better way to do it, we should start doing the same over TLS/QUIC

  798. Steve Kille has joined

  799. flow

    thilo.molitor, the stream header is trivial to parse and from an trusted entity

  800. goffi has left

  801. moparisthebest

    Ie prefixing each stanza with a length

  802. goffi has joined

  803. thilo.molitor

    > The same for all users? > Don't do that No, one parser for every TCP stream of course

  804. Guus

    hasn't Jitsi published that yet, Flow?

  805. Guus

    (I agree, it makes a strong case for not carrying over state).

  806. hnsr.q has left

  807. flow

    No, one parser of every top-level stream element ;)

  808. thilo.molitor

    > if you parse multiple stream elements with the same parser, then, due the missing isolation, one entity can affect another entity > that's the high level view of it But as s2s client, if you don't trust your server all bets are off anyways, no?

  809. thilo.molitor

    *c2s

  810. flow

    but really, it depends on the parser you use how much DoS'y it gets

  811. flow

    in Smack's case, it was ironically StAX's DoS protection that makes the connection DoS'able

  812. singpolyma

    moparisthebest: the grip Oracle thing specifically relies on the attacker injecting significant content into the compressed stream. Only affects xmpp in the case of error stanzas mostly

  813. Tobias has left

  814. Tobias has joined

  815. thilo.molitor

    > No, one parser of every top-level stream element ;) I don't really get it...you use one parser for all TCP connections?

  816. thilo.molitor

    singpolyma: we could just compress every stanza independent of others, wouldn't that eliminate the oracle risks more or less?

  817. flow

    No, I create a new parser for every top-level stream element

  818. thilo.molitor

    > No, I create a new parser for every top-level stream element Is that a server or client?

  819. singpolyma

    thilo.molitor: yes, of course

  820. antranigv has joined

  821. thilo.molitor

    For a client I won't assume the server tries to dos me...

  822. Zash

    thilo.molitor, just be sure to never connect to moparisthebest's servers then ;)

  823. thilo.molitor

    singpolyma: then someone just has to write a new xep for that ;)

  824. thilo.molitor

    > thilo.molitor, just be sure to never connect to moparisthebest's servers then ;) :D

  825. marc0s has left

  826. marc0s has joined

  827. singpolyma

    thilo.molitor: or just the code. The existing xep and/or tls compression cover it

  828. flow

    thilo.molitor, client in my case, but I believe a server should do the same

  829. flow

    esentially servers are more exposed to unvalidated input as clients are

  830. singpolyma

    It's just an implementation consideration to flush after every error stanza or on error stanza or whatever model you want to choose

  831. Zash

    I definitely remember langsec folks saying the XML way is better than lenght-prefixed protocols for security reasons. So I will remain skeptical to framing, and especially websockets.

  832. flow

    but in XMPP, servers tend to just route through invalid / dangerous data to clients if they do not need the data for routing purposes, so clients also get a lot of questionable input

  833. Zash

    flow, define "invalid / dangerous data" ?

  834. thilo.molitor

    flow: but from a client perspective a server can easily do wild things like always close the connection after authentication or whatever...what I want to say is: if, from a client perspective, you don't trust your server, all bets are of anyways....

  835. thilo.molitor

    singpolyma: I'd do it after every stanza/nonza

  836. thilo.molitor

    > flow, define "invalid / dangerous data" ? Yes, please

  837. adiaholic has left

  838. Ingolf has left

  839. Vaulor has left

  840. Vaulor has joined

  841. zonsopkomst has left

  842. massivebox has left

  843. Mikaela has left

  844. MSavoritias (fae,ve) has left

  845. moparisthebest

    Zash: to be clear I'm saying length prefix is best, I just mentioned WebSocket cause that's basically what it does

  846. moparisthebest

    I can't think of a problem with a length prefix, but many vulns have happened because we don't have it

  847. mh has left

  848. flow

    https://discourse.igniterealtime.org/t/denial-of-service-vulnerability-in-smack-4-4-if-xmpptcpconnection-is-used-with-stax/92314

  849. flow

    Zash, invalid could mean multiple things, for example schema says attribute value is int but it actually contains "foo"

  850. Zash

    Aren't there vulns because of them too?

  851. jonas’

    moparisthebest, question 1: how many bits would you reserve for the length prefix? question 2: how do you detect and handle the case where you got out of sync with the length prefix, e.g. because a faulty remote implementation swallowed a byte somewhere? question 3 (somewhat related to 2): which endianess? question 4: how to prevent people from passing it right into malloc() without thinking?

  852. flow

    dangerous could be something that triggers the dos protection of your XML parser ;)

  853. singpolyma has left

  854. singpolyma has joined

  855. jonas’

    (pro tip: use an XML parser which doesn't need DoS protections because it doesn't support entities or whatever)

  856. flow

    well in JAXP's case, the limits where cummulative…

  857. flow

    and not just entity exansion, but also things like max attributes

  858. paul has left

  859. flow

    the commulative nature make the thing worse if you parsed the whole XMPP stream as a single document

  860. flow

    the commulative nature makes the thing worse if you parsed the whole XMPP stream as a single document

  861. jonas’

    if you parse an XMPP stream into a document, that's your first mistake

  862. flow

    I know, that's why I don't do it ;)

  863. flow

    or maybe "into a document" has a differnt meaning for me as for you

  864. flow

    Smack's code before me used to threat the whole XMPP stream as a single document using a single parser

  865. jonas’

    if you end up with something DOM-like which contains the stream header

  866. singpolyma has left

  867. jonas’

    creating separate parser things for every stanza is another way to screw things up

  868. flow

    well it's pull parsing, so it's not dom-like

  869. singpolyma has joined

  870. jonas’

    that's got nothing to do with one another

  871. jonas’

    you can have a pull parser which creates a DOM

  872. rubi has left

  873. jonas’

    you can have a SAX parser which is fed into a DOM generator

  874. jonas’

    the only sensible way, which won't lead into valleys of pain and sorrow, is using a streaming parser and to parse the entire stream in a single parser state

  875. rubi has joined

  876. flow

    fwiw, I did not run (yet) into any issues with the splitting approach

  877. jonas’

    namespace prefixes?

  878. flow

    but ymmv

  879. flow

    well that is what we discussed initially

  880. jonas’

    sorry, late to the party I am

  881. Ray22 has joined

  882. jonas’

    that would be one issue though :)

  883. flow

    if you want to support them, then you have to suppor them, but its not rocket science

  884. mh has joined

  885. flow

    if you want to support them, then you have to support them, but its not rocket science

  886. jonas’

    even with just the default namespace, it implies having to use some weird parser for the stream header (one which exposes prefixes and so on to the application layer, which is yet-another-way to make ones life harder with XML)

  887. flow

    not sure where it implies to use some weird parser

  888. jonas’

    (namespace prefixes shouldn't matter and you should just not even receive them from the parser; though being able to set them is sensible for legacy compatibility)

  889. jonas’

    flow, how would you otherwise learn the default namespace, given that the stream header is decidedly not in that namespace?

  890. jonas’

    that requires a weird parser.

  891. jonas’

    alternatively you can not care about that, of course, and ignore unconforming implementations and just hope it's jabber:client/jabber:server matching the connection type.

  892. flow

    it's been probably 3-4 years ago when I wrote the code, let me see what crimes I did ther

  893. jonas’ backs away slowly

  894. singpolyma has left

  895. singpolyma has joined

  896. adiaholic has joined

  897. goffi has left

  898. flow

    jonas’, not sure if I understand your question regarding the "default nnamespace"

  899. flow

    at some point I get the stream open tag, and there will be a xmlns in it?

  900. jonas’

    exactly

  901. jonas’

    no sensible parser should give you the contents of that attribute

  902. jonas’

    to protect you from hurting yourself

  903. flow

    that attribute being 'xmlns'?

  904. jonas’

    yes

  905. Ray22 has left

  906. flow

    ok, I am not sure why a parser shouldn't reveal the contents of the attribute, but in my case, the stream open is in fact not processed by a parser, but by jxmpp's XML string splitter, it is special cased one could say

  907. jonas’ backs away more quickly

  908. Zash

    So in case anyone was wondering why we don't use some XML features, this is why. :)

  909. flow

    hmm?

  910. eevvoor has left

  911. antranigv has left

  912. antranigv has joined

  913. moparisthebest

    jonas’: 1. 24 bit would be enough but maybe 32 to not be odd... 2. This isn't a problem is it? If you read length and it's not valid XML, close stream 3. Network endianess 4. Well it's trivial, and you can reuse buffers, unlike now where people dynamically grow allocations (and it plays better with GC langs)

  914. flow

    That was in particular build allowing for XML features like namespace declartions in <stream/> for reduced bytes on the wire

  915. antranigv has left

  916. antranigv has joined

  917. Zash

    moparisthebest, I'm afraid what will happen if I tell you this, but you could probably get away with chunked content encoding from HTTP (hex encoded length prefixes) since text between stanzas will likely be ignored

  918. singpolyma has left

  919. singpolyma has joined

  920. Ingolf has joined

  921. rubi has left

  922. rubi has joined

  923. antranigv has left

  924. antranigv has joined

  925. eevvoor has joined

  926. Tobias has left

  927. Tobi has left

  928. antranigv has left

  929. antranigv has joined

  930. antranigv has left

  931. stp has left

  932. antranigv has joined

  933. pablo has joined

  934. Tobi has joined

  935. Tobias has joined

  936. flow

    That was in particular build allowing for XML features like namespace declartions in <stream/> to reduce the bytes on the wire

  937. rubi has left

  938. rubi has joined

  939. antranigv has left

  940. antranigv has joined

  941. asterix has left

  942. asterix has joined

  943. rubi has left

  944. rubi has joined

  945. asterix has left

  946. asterix has joined

  947. pasdesushi has left

  948. singpolyma has left

  949. singpolyma has joined

  950. bean has joined

  951. goffi has joined

  952. neshtaxmpp has left

  953. neshtaxmpp has joined

  954. hnsr.q has joined

  955. asterix has left

  956. asterix has joined

  957. Shackleton has joined

  958. pasdesushi has joined

  959. asterix has left

  960. asterix has joined

  961. goffi has left

  962. stp has joined

  963. moparisthebest

    Zash: hmm probably true... Though I'm not sure it's very helpful if it's optional, I was thinking it'd be advertised on the connection level, ie you'd know before connecting

  964. Shackleton has left

  965. Shackleton has joined

  966. Paganini has joined

  967. singpolyma

    A length prefix on regular stanzas seems redundant, but it would be neat to have a way to switch to "this is binary now" with a length prefix to allow arbitrary binary content in almost-xml without base64

  968. Shackleton has left

  969. Zash

    moparisthebest, well if you do things like that, stream feature and negotiate it

  970. singpolyma has left

  971. singpolyma has joined

  972. stp has left

  973. Kev has joined

  974. Kev has left

  975. Trung has left

  976. rubi has left

  977. bean has left

  978. sonny has left

  979. sonny has joined

  980. flow

    or EXI it

  981. singpolyma has left

  982. singpolyma has joined

  983. bean has joined

  984. bean has left

  985. antranigv has left

  986. antranigv has joined

  987. antranigv has left

  988. antranigv has joined

  989. thilo.molitor

    > well in JAXP's case, the limits where cummulative… Isn't that dos protection having upper limits for the entire stream moot anyways? I mean at least in the xmpp context you'd process a stanza and then forget about it...and I think many streaming XML protocols do the same...

  990. rubi has joined

  991. thilo.molitor

    So isn't turning off these global limits a better dos protection than trying to split the XML string into its stanzas/nonzas on the string level with something not a true XML parser just to concatenate this string chunk with another containing the carved out stream header and then feed that whole thing into a true XML parser?

  992. thilo.molitor

    flow: Seems overly complicated and error prone to me...

  993. Paganini has left

  994. Paganini has joined

  995. thilo.molitor

    If your parser could only do global limits rather than per stanza limits, you maybe should use another parser (maybe something written in rust?)

  996. antranigv has left

  997. antranigv has joined

  998. antranigv has left

  999. singpolyma has left

  1000. singpolyma has joined

  1001. catchy has left

  1002. catchy has joined

  1003. Paganini has left

  1004. Paganini has joined

  1005. sonny has left

  1006. sonny has joined

  1007. asterix has left

  1008. asterix has joined

  1009. mh has left

  1010. rubi has left

  1011. rubi has joined

  1012. hnsr.q has left

  1013. mh has joined

  1014. Friendly Resident Cynic has joined

  1015. rubi has left

  1016. antranigv has joined

  1017. flow

    thilo.molitor, I am not sure if I would describe it as overlay complicated myself. I belive you need some first parsing step that enforces stanza limits, and then the <stream/> handling is trivial

  1018. flow

    at least that was my experience when I implemented it

  1019. antranigv has left

  1020. antranigv has joined

  1021. flow

    and I also found that this low-level, featureless XML parser that does the XML splitting to be fairly easy to implement

  1022. flow

    especially if you only have to take care of valid-XMPP XML

  1023. mh has left

  1024. mh has joined

  1025. Titi has joined

  1026. flow

    thilo.molitor, I am not sure if there are may further XML streaming protcols besides XMPP fwiw

  1027. flow

    I am not sure about SOAP, but I believe SOAP messages are freestanding

  1028. singpolyma

    There have been streaming atom over http things in the past, but most of those are streaming json now

  1029. flow

    globally turning off the limits in JAXPs case is problematic if JAXP is used elsewhere in the same application/(JVM instance) where they are required. in some cases, you can't simply turn them off globally

  1030. flow

    and sadly JAXP has no way to configure pre-parser limits

  1031. flow

    and sadly JAXP has no way to configure per-parser limits

  1032. catchy has left

  1033. catchy has joined

  1034. gooya has left

  1035. flow

    and wrt RIIR: I'd rathyer stay in the JVM ecosystem and this makes the whole thing portable

  1036. moparisthebest

    I think using a general purpose XML library rather than an XMPP specific one is also always a mistake

  1037. flow

    but really, the main argument is that it's sensible split the incoming stream in individual top-level stanzas for isoliation purposes, then the limits of the actual XML parser do not really matter, as they are probably higher than the usualy maximum stanza limit (which I believe is currently in the range from 64 KiB to 1 MiB)

  1038. flow

    moparisthebest, that's a bold statement, why no re-use existing libs as building block?

  1039. flow

    i'd assume that implementing your own XML parser is far more error prone, especially if done in an unsafe language

  1040. moparisthebest

    A long and continued history of security vulnerabilities has proven it to be a mistake

  1041. Menel

    He didn't say build your own.. But use one that doesn't have the 90% you'll never need

  1042. flow

    so because others are unable to implement a XML parser securely you have to do it yourself because you will not make any mistakes?

  1043. neshtaxmpp has left

  1044. moparisthebest

    general XML parsing is very very complicated and full of demons, parsing the small subset of XML that XMPP uses not so much

  1045. flow

    I think most XML parser are able to be configured to use the sensible XML defaults that XMPP requires, some of them are even configured out of the box that way

  1046. antranigv has left

  1047. antranigv has joined

  1048. antranigv has left

  1049. antranigv has joined

  1050. Titi has left

  1051. neshtaxmpp has joined

  1052. flow

    it's really not that much, many of the issues are due to entity references and external entities, disablem them and you eliminate many error causes

  1053. flow

    it's really not that much, many of the issues are due to entity references and external entities, disable them and you eliminate many error causes

  1054. singpolyma

    moparisthebest: why would you need something xmpp specific?

  1055. flow

    but those are not really much about parsing, more about XML transofrmation

  1056. singpolyma

    I'm not aware of any "subset" that xmpp uses. Unless you mean we don't use doctypes

  1057. gooya has joined

  1058. moparisthebest

    singpolyma: because it has about 999x less code than a general XMPP parser and therefore 999x less bugs

  1059. moparisthebest

    singpolyma: because it has about 999x less code than a general XML parser and therefore 999x less bugs

  1060. flow

    singpolyma, if I understand moparisthebest correctly, then he assumes that a parser that only implements the XML stuff required for XMPP is superior

  1061. flow

    compared to using a "standard" XML parser

  1062. singpolyma

    flow: but that's ~all XML stuff afaik

  1063. flow

    I am not sure if I can follow moparisthebest argument

  1064. moparisthebest

    Yes, smaller and less buggy, which means more secure

  1065. Zash

    singpolyma, entity declarations, comments, stuff like that

  1066. flow

    if you use a niche XMPP XML parser, then this code probably gets less review than the real XML parser

  1067. singpolyma

    Zash: declarations are doctype yeah. Does xmpp explicitly disallow comments???

  1068. Zash

    I believe so

  1069. flow

    and most standard XML parser can be configured in a safe XML way, which is "accidentially" just what XMPP requires from XML

  1070. Zash

    If only I could link to sections in the RFC

  1071. moparisthebest

    "less review" isn't a very good argument

  1072. flow

    singpolyma, yes we disallow comments in the stream

  1073. Zash

    singpolyma, https://xmpp.org/rfcs/rfc6120.html#xml-restrictions

  1074. flow

    but I am not aware of any security issue wrt to XML comments (happy to be proven wrong)

  1075. singpolyma

    That's insane and dumb but ok

  1076. moparisthebest

    flow: maybe they can be but a massive source of CVEs is when they accidentally aren't

  1077. moparisthebest

    This isn't conjecture I'm just looking at history

  1078. flow

    the realy XML mine field are entity references and processing instructions

  1079. singpolyma

    I mean, processing instructions are mostly just comments

  1080. singpolyma

    Unless you define some that you understand

  1081. singpolyma

    And yeah, doctypes are a while different thing we obviously don't need

  1082. flow

    the real XML mine field are entity references and processing instructions

  1083. singpolyma

    And yeah, doctypes are a whole different thing we obviously don't need

  1084. moparisthebest

    flow: comments are a security issue when different things interpret them differently, ie your parser thinks something is commented out and mine doesn't etc, also a very common vuln in parsers of all types

  1085. flow

    moparisthebest, but i've never heard of XML comments being ambiguous?

  1086. flow

    you are right in general of course, that this is the typical problem of (human-readable) comments in documents for machines, but I never heard that this was an issue in XML (again, happy to be proven wrong)

  1087. Zash

    What is the use case for comments in a network protocol?

  1088. flow

    there is none, but it's probably also the XML feature with the smallest attack surface

  1089. serge90 has left

  1090. serge90 has joined

  1091. flow

    still, I lean towards that it is sensible to forbid them in XMPP

  1092. singpolyma

    Zash: same as anywhere else. For humans to betters understand when reading

  1093. Zash

    I'm not aware of comments allowed .. outside of email, which seems like an argument to forbid them.

  1094. flow

    eeehhh, maybe, but in my year working with XMPP I never thought "hey, it would be great if this XMPP stream had comments"

  1095. flow

    and even then, you can immitate comments by using custom extension elements

  1096. flow

    and, most importantly, provide <error/> with a good textual description that reflects the internal state of the implementation emitting the error, aiding debugging

  1097. flow

    (of course without leaking any secrets ;))

  1098. flow

    *in my years working with XMPP

  1099. singpolyma

    flow: sure. But also pretending we use a "subset" of XML when no one is hand rolling an XML parser seems just asking to be violated. I expect most implementations allow comments because there's no reason not to

  1100. Zash

    Relevant https://modules.prosody.im/mod_conformance_restricted.html

  1101. stp has joined

  1102. flow

    singpolyma, I believe you are right about this assumption, but like to point out that jxmpp XML splitter bails on comments (for that exact reason)

  1103. flow

    singpolyma, I believe you are right about this assumption, but like to point out that jxmpp's XML splitter bails on comments (for that exact reason)

  1104. singpolyma has left

  1105. singpolyma has joined

  1106. moparisthebest

    flow: https://bugs.chromium.org/p/project-zero/issues/detail?id=2254 is a good example of even raw XML being "ambiguous" and yet another reason for length prefixed stanzas

  1107. daags has left

  1108. Zash

    https://hg.prosody.im/trunk/file/0.12.1/util/xmppstream.lua#l228

  1109. daags has joined

  1110. moparisthebest

    Gloox still hasn't been fixed by the way

  1111. rubi has joined

  1112. singpolyma has left

  1113. singpolyma has joined

  1114. moparisthebest

    Fwiw I agree stanzas should be split from the stream before sending to an XML parser https://github.com/moparisthebest/xmpp-proxy/blob/master/src/stanzafilter.rs length prefixes sure would make it simpler though

  1115. antranigv has left

  1116. singpolyma

    Was expat fixed?

  1117. moparisthebest

    I believe I asked at the time and ejabberd's fastxml and/or expat was fixed

  1118. stp has left

  1119. singpolyma

    Both of the bugs seem to come from hand rolling utf8, which I guess is the sort of thing you have to do in C

  1120. flow

    moparisthebest, well it is ambigous to broken implemetantions, but then all bets are off. I was thinking about someting like https://trojansource.codes/

  1121. flow

    moparisthebest, fwiw, I can totally get behind the idea of length prefixes for top-level elements in XMPP 2.0

  1122. hnsr.q has joined

  1123. singpolyma

    Then everyone would *have* to hand roll parsers :P

  1124. flow

    no

  1125. atomicwatch has left

  1126. flow

    well yes, the first level parser

  1127. flow

    that extracts the length prefix and an XML string

  1128. flow

    but then you can use an off-the-shelf XML parser for parsing the XML string

  1129. moparisthebest

    flow: ha yea that was the kind of thing I was thinking about, nice website

  1130. singpolyma

    flow: hopefully you wouldn't actually allocate a string for the XML data!!!

  1131. flow

    singpolyma, hmm?

  1132. moparisthebest

    Yea but you already have to roll your own first level parser, it's just hard vs reading a length

  1133. flow

    I think I would, and do

  1134. singpolyma

    The way you described it made it sound like you would read <length> bytes off the stream into a string and then feed them into a parser

  1135. singpolyma

    Which is pretty awful

  1136. flow

    it is *harder* then reading a length and the filling a buffer until the length is reached

  1137. hnsr.q has left

  1138. flow

    singpolyma, why is it pretty awful?

  1139. singpolyma

    Because you need to store the while stanza in ram

  1140. flow

    right, so?

  1141. rubi has left

  1142. rubi has joined

  1143. flow

    stanzas have to have an upper limit

  1144. flow

    we are not sure where the limit should be, but I think it's between 64 KiB and 1 MiB

  1145. singpolyma

    Only because people implement things in this way :P

  1146. moparisthebest

    Ideally you'd have a pool of buffers to read stanzas into, and never resize them

  1147. flow

    sure 1 MiB is probably not something your embedded microcontroller can handle

  1148. flow

    that's why I personally would prefer a smaller maximum stanza size, probably around 128 KiB

  1149. singpolyma

    If you have a parser already there's no reason to buffer the entire content. In any format or protocol. This is why we have streaming parsers

  1150. david has joined

  1151. david has left

  1152. moparisthebest

    max_stanza_size_bytes = 262_144

  1153. Zash

    And then we don't need no length prefixes either

  1154. moparisthebest

    Sorry that's what it is forever

  1155. moparisthebest

    the entire federated network agrees

  1156. singpolyma

    I thought I was lower than that?

  1157. flow

    singpolyma, I don't think that this is true

  1158. Zash

    Thinking of the 10k number?

  1159. singpolyma

    Oh no, I'm forgetting base64 overhead

  1160. flow

    you need to buffer the entire top-level stream element for processing after parsing, in one representation or the other

  1161. Zash

    Yay, 3x memory usage right there!

  1162. flow

    Zash, 2x I'd say

  1163. flow

    but, yeah, you could tripple buffer

  1164. Zash

    1x for the buffer, 1x for the collapsed string, 1x for the parsed representation.

  1165. singpolyma

    flow: depends on your application. A server for instance does not since it can just copy the bytes to the target stream once it know which that is so needs only some small state derived from the parser events not the whole thing

  1166. flow

    Zash, in my approach, the collapsed string is the buffer

  1167. moparisthebest

    I'm told some past server did that singpolyma

  1168. flow

    singpolyma, that's dangerous for the server to do

  1169. moparisthebest

    Sounds fun for running clients out of memory

  1170. flow

    because what if the sender suddenly becomes very slow

  1171. flow

    yet you already started to feed the send data into the receiving sink?

  1172. moparisthebest

    Ooh yea and the slowloris, good point flow

  1173. flow

    XMPP servers have to store-and-forward

  1174. singpolyma

    moparisthebest: that's the client's problem :)

  1175. flow

    just like ethernet switches ;)

  1176. moparisthebest

    They don't have to, but probably should

  1177. singpolyma

    Probably should avoid I think you mean

  1178. moparisthebest

    You could totally ruin s2s links as a client that way

  1179. stp has joined

  1180. eevvoor has left

  1181. moparisthebest

    I'll send half a stanza then just never finish lol

  1182. moparisthebest

    What does the server do to recover?

  1183. flow

    essentially XMPP is totally borked when it comes to queuing discipline

  1184. flow

    how should a server behave if a client suddently starts to receive data veeerrry slowly?

  1185. singpolyma

    flow: how does the client receive speed affect the server at all? Just keep putting bytes in the socket

  1186. flow

    (that is basically the reverse of the "Slow HTTP Attack")

  1187. flow

    singpolyma, if a clients does not drain its outgoing buffer on the server side, then the buffer either grows identifently OR

  1188. flow

    singpolyma, if a clients does not drain its outgoing buffer on the server side, then the buffer either grows indefinitely OR

  1189. Zash

    flow, `<sm:a/>` times out, it gets kicked

  1190. flow

    or it has to put backpressure on some other entities in the network (which is bad)

  1191. flow

    or it has to drop stanzas (which is also bad)

  1192. flow

    all three options in that scenario are bad and we have no solution

  1193. singpolyma

    I... Don't think that's how it works? Server side writes the packets to network they don't need to buffer there?

  1194. moparisthebest

    singpolyma: I'm talking about a client A sends a stanza destined for a remote server, or even another client on the same server, if the server starts streaming the stanza before client A finishes, what does the server do if client A never finishes?

  1195. flow

    singpolyma, of course there is a buffer and/or the write() will block

  1196. Zash

    open 3000 s2s connections!

  1197. singpolyma

    moparisthebest: right. That's an interesting case. And of course one could argue that mam requires storing it anyway, so maybe that's the right initial sink.

  1198. Patiga has joined

  1199. flow

    fwiw, there is a fourth option which is, I believe, employed by most serious XMPP servers: drop clients that are to slow

  1200. flow

    probably not ideal, but obviously has served us well so far

  1201. atomicwatch has joined

  1202. flow

    still, I'd love to see a better solution, but this probalby requires a fundamental different approach from XMPP

  1203. moparisthebest

    But if they only sent half a stanza and you already started sending it down other streams then you have to close *all* the streams

  1204. Zash

    In normal Instant Messaging, being slow enough to run into these kinds of problems is rare, so if it does happen it's likely the connection is borked and closing it is the thing to do

  1205. flow

    basically the solution is that clients to not get data pushed, but that they pull, and that most state resides on the server (which is similar to djb's mail 2000 approach)

  1206. flow

    Zash, the problem is that it is often not the client being slow, but the others being to fast

  1207. Zash

    flow, what's that? send notifications and then clients (and servers) poll?

  1208. flow

    something like that: the server sending just a tiny bit of notificaton that causes the client to initiate a poll

  1209. flow

    really nothing that we will probably see soon (or ever) in XMPP

  1210. Zash

    Sounds like a great way to build a self-inflicted DDoS machine

  1211. flow

    how?

  1212. neshtaxmpp has left

  1213. Zash

    It changes the rate of things to depend on the receivers instead of the sender, so if you host on underpowered hardware (as some do because XMPP is very efficient).

  1214. flow

    yep, that's the pill you have to take. as I wrote, most state is on the server then

  1215. flow

    which would then, as yout pointed out, required stronger server machines

  1216. Zash

    Affects mostly broadcast things like chat rooms tho

  1217. flow

    but in my vision, every family and/or household hosts its own service (or uses some sort of provider that operates if for them at home or at a cloud)

  1218. flow

    and then the load on the server should be not really significant, as the number of users is low, and by that the state is not that big

  1219. neshtaxmpp has joined

  1220. flow

    fwiw, that is also why I ♥ IMAP

  1221. stp has left

  1222. rubi has left

  1223. rubi has joined

  1224. Zash

    Adding a bunch of roundtrips just to receive a small chat message seems unwarranted.

  1225. thilo.molitor has left

  1226. catchy has left

  1227. singpolyma has left

  1228. singpolyma has joined

  1229. Zash

    Tho it is, in effect, what you get on iOS and other restricted mobile settings.

  1230. thilo.molitor has joined

  1231. neshtaxmpp has left

  1232. neshtaxmpp has joined

  1233. david has joined

  1234. david has left

  1235. flow

    jonas’, to pick up a previous topic: could you elaborate why a user learing about the value of the default namespace would lead to potentially hurt the user?

  1236. singpolyma

    flow: they might try to use it for something instead of letting the XML lib handle it

  1237. stp has joined

  1238. coleman has left

  1239. Dele Olajide has joined

  1240. mh has left

  1241. marc0s has left

  1242. marc0s has joined

  1243. coleman has joined

  1244. Mjolnir Archon has left

  1245. Maranda has left

  1246. brunrobe has left

  1247. Mjolnir Archon has joined

  1248. brunrobe has joined

  1249. Maranda has joined

  1250. mh has joined

  1251. singpolyma has left

  1252. singpolyma has joined

  1253. singpolyma has left

  1254. singpolyma has joined

  1255. nicoco has left

  1256. rubi has left

  1257. rubi has joined

  1258. karoshi has left

  1259. marc0s has left

  1260. marc0s has joined

  1261. mh has left

  1262. karoshi has joined

  1263. Half-Shot has left

  1264. homebeach has left

  1265. Matthew has left

  1266. uhoreg has left

  1267. mh has joined

  1268. Half-Shot has joined

  1269. Matthew has joined

  1270. homebeach has joined

  1271. uhoreg has joined

  1272. stp has left

  1273. bean has joined

  1274. Mjolnir Archon has left

  1275. Maranda has left

  1276. brunrobe has left

  1277. Trung has joined

  1278. singpolyma has left

  1279. singpolyma has joined

  1280. emus

    Hey folks, would be great to one or the other reviewer! https://github.com/xsf/xmpp.org/pull/1209 We still don't know all contributors

  1281. Maranda[x] has left

  1282. stp has joined

  1283. zonsopkomst has joined

  1284. rubi has left

  1285. rubi has joined

  1286. Maranda[x] has joined

  1287. gooya has left

  1288. gooya has joined

  1289. Yagiza has left

  1290. ralphm

    emus: Regarding your request on changing the Monal feed on Planet Jabber, I have a question. What is the difference between monal.im and monal-im.org? I see the latter is newer, but it is kinda confusing.

  1291. emus

    ralphm: Monal changed their owners and made an entire new website CC thilo.molitor

  1292. emus

    .im is outdated? see last blogpost

  1293. emus

    .im is outdated, see last blogpost

  1294. marc0s has left

  1295. marc0s has joined

  1296. mh has left

  1297. neshtaxmpp has left

  1298. neshtaxmpp has joined

  1299. asterix has left

  1300. asterix has joined

  1301. mh has joined

  1302. petrescatraian has left

  1303. rubi has left

  1304. rubi has joined

  1305. karoshi has left

  1306. raghavgururajan has left

  1307. ralphm

    ok

  1308. massivebox has joined

  1309. karoshi has joined

  1310. Trung has left

  1311. mirux has left

  1312. Mikaela has joined

  1313. mirux has joined

  1314. MSavoritias (fae,ve) has joined

  1315. bean has left

  1316. atomicwatch has left

  1317. Trung has joined

  1318. Trung has left

  1319. Trung has joined

  1320. stp has left

  1321. moparisthebest

    Woo DNSSEC

  1322. Trung has left

  1323. Trung has joined

  1324. stp has joined

  1325. rubi has left

  1326. rubi has joined

  1327. Tobias has left

  1328. Tobi has left

  1329. Tobi has joined

  1330. Tobias has joined

  1331. andrey.g has joined

  1332. stp has left

  1333. papatutuwawa has left

  1334. stp has joined

  1335. rubi has left

  1336. rubi has joined

  1337. papatutuwawa has joined

  1338. coleman has left

  1339. coleman has joined

  1340. stp has left

  1341. pablo has left

  1342. stp has joined

  1343. xnamed has left

  1344. xnamed has joined

  1345. adiaholic has left

  1346. adiaholic has joined

  1347. Vaulor has left

  1348. Vaulor has joined

  1349. david has joined

  1350. david has left

  1351. tbm16 has left

  1352. Dele Olajide has left

  1353. rubi has left

  1354. rubi has joined

  1355. atomicwatch has joined

  1356. tbm16 has joined

  1357. neshtaxmpp has left

  1358. Titi has joined

  1359. neshtaxmpp has joined

  1360. goffi has joined

  1361. rubi has left

  1362. rubi has joined

  1363. lskdjf has left

  1364. Titi has left

  1365. lskdjf has joined

  1366. Kev has joined

  1367. Kev has left

  1368. rubi has left

  1369. rubi has joined

  1370. david has joined

  1371. david has left

  1372. Titi has joined

  1373. david has joined

  1374. david has left

  1375. rubi has left

  1376. Titi has left

  1377. atomicwatch has left

  1378. atomicwatch has joined

  1379. Maranda[x] has left

  1380. Vaulor has left

  1381. Vaulor has joined

  1382. projjalm has left

  1383. konstantinos has left

  1384. rubi has joined

  1385. marc0s has left

  1386. MSavoritias (fae,ve) has left

  1387. marc0s has joined

  1388. Vaulor has left

  1389. adiaholic has left

  1390. rubi has left

  1391. adiaholic has joined

  1392. Vaulor has joined

  1393. mh has left

  1394. atomicwatch has left

  1395. debacle has joined

  1396. mh has joined

  1397. mirux has left

  1398. Mario Sabatino has left

  1399. millesimus has left

  1400. millesimus has joined

  1401. konstantinos has joined

  1402. brunrobe has joined

  1403. david has joined

  1404. david has left

  1405. millesimus has left

  1406. Half-Shot has left

  1407. homebeach has left

  1408. Matthew has left

  1409. uhoreg has left

  1410. Half-Shot has joined

  1411. Matthew has joined

  1412. homebeach has joined

  1413. uhoreg has joined

  1414. marc0s has left

  1415. marc0s has joined

  1416. Vaulor has left

  1417. Vaulor has joined

  1418. asterix has left

  1419. asterix has joined

  1420. marc0s has left

  1421. marc0s has joined

  1422. zonsopkomst has left

  1423. zonsopkomst has joined

  1424. pasdesushi has left

  1425. Maranda[x] has joined

  1426. Half-Shot has left

  1427. homebeach has left

  1428. Matthew has left

  1429. uhoreg has left

  1430. Half-Shot has joined

  1431. Matthew has joined

  1432. homebeach has joined

  1433. uhoreg has joined

  1434. pasdesushi has joined

  1435. Mjolnir Archon has joined

  1436. millesimus has joined

  1437. Maranda has joined

  1438. marc0s has left

  1439. marc0s has joined

  1440. marc0s has left

  1441. marc0s has joined

  1442. petrescatraian has joined

  1443. marc0s has left

  1444. marc0s has joined

  1445. Axel has left

  1446. goffi has left

  1447. marc0s has left

  1448. marc0s has joined

  1449. Maxence has left

  1450. marc0s has left

  1451. marc0s has joined

  1452. andrey.g has left

  1453. Ray22 has joined

  1454. Ray22 has left

  1455. tbm16 has left

  1456. tbm16 has joined

  1457. floretta has left

  1458. rubi has joined

  1459. lskdjf has left

  1460. mh has left

  1461. hnsr.q has joined

  1462. pablo has joined

  1463. mh has joined

  1464. hnsr.q has left

  1465. *IM* has left

  1466. debacle has left

  1467. debacle has joined

  1468. Calvin has joined

  1469. gooya has left

  1470. gooya has joined

  1471. papatutuwawa has left

  1472. marc0s has left

  1473. marc0s has joined

  1474. rubi has left

  1475. sonny has left

  1476. sonny has joined

  1477. Calvin has left

  1478. Tobias has left

  1479. oshn has left

  1480. Tobi has left

  1481. oshn has joined

  1482. pablo has left

  1483. pasdesushi has left

  1484. pablo has joined

  1485. rubi has joined

  1486. robertooo has left

  1487. mh has left