<feed xmlns='http://www.w3.org/2005/Atom'>
<title>accel-ppp.git/accel-pppd, branch master</title>
<subtitle>High performance PPTP/L2TP/SSTP/PPPoE/IPoE server for Linux (mirror of https://github.com/accel-ppp/accel-ppp.git)
</subtitle>
<id>https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=master</id>
<link rel='self' href='https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/'/>
<updated>2026-08-12T07:20:30+00:00</updated>
<entry>
<title>Merge pull request #342 from nuclearcat/feature/metrics-json-sessions</title>
<updated>2026-08-12T07:20:30+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-12T07:20:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=ead8a7839bf2a8dbb4358fb115ed98d688bf2c28'/>
<id>urn:sha1:ead8a7839bf2a8dbb4358fb115ed98d688bf2c28</id>
<content type='text'>
metrics: expose session details in JSON output</content>
</entry>
<entry>
<title>sstp: reject packets shorter than header</title>
<updated>2026-08-09T19:57:20+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-08T23:08:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=1719b4ab756158f4a102bcf5036ff250d67ed015'/>
<id>urn:sha1:1719b4ab756158f4a102bcf5036ff250d67ed015</id>
<content type='text'>
A peer can send an SSTP packet with a zero encoded length and an unknown packet type. The receive dispatcher accepts the unknown type, after which buf_pull() consumes no data and the handler loops forever on the same packet, monopolizing a Triton worker.

Reject all packet lengths smaller than the SSTP header before dispatch so malformed packets close the connection without entering the non-progressing loop.
</content>
</entry>
<entry>
<title>sstp: add ppposeq transport to avoid userspace HDLC framing</title>
<updated>2026-08-04T20:41:46+00:00</updated>
<author>
<name>Vladislav Grishenko</name>
<email>themiron@mail.ru</email>
</author>
<published>2026-07-30T10:48:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=3b08133ee131bca35b10bcc133f6adaf5d125c21'/>
<id>urn:sha1:3b08133ee131bca35b10bcc133f6adaf5d125c21</id>
<content type='text'>
A pty is a byte stream, so the tty flip buffer merges frames written
back to back and sstp has to re-delimit them with async HDLC escaping
and a CRC-16 FCS. On a 1452-byte payload that is ~3600 ns per frame,
most of it spent on the FCS.

PPPOSEQ is a pppox protocol whose socket is the ppp endpoint itself,
so one datagram is one frame and no framing is needed at all. The
same payload takes ~380 ns per frame, about 9 times less. Requires
kernel 2.6.37, the first with PX_MAX_PROTO 3, whose remaining slot
it claims.
Supported kernels are from 2.6.37 to 7.2.

The new ppp-mode option selects the transport; auto, the default,
falls back to async when the module is unavailable, so hosts with
prebuilt kernels are unaffected.

PPP_SYNC is removed, being disabled and unfixable over a pty: frame
boundaries cannot be recovered from the stream, and coalescing cannot
be prevented since frames arrive from the network stack.
</content>
</entry>
<entry>
<title>sstp: enforce standard http replies w/o body</title>
<updated>2026-08-02T15:08:11+00:00</updated>
<author>
<name>Vladislav Grishenko</name>
<email>themiron@mail.ru</email>
</author>
<published>2026-08-02T14:37:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=4ac0b4f396825441042ecfbbb3850ce765ae3686'/>
<id>urn:sha1:4ac0b4f396825441042ecfbbb3850ce765ae3686</id>
<content type='text'>
fixes http client warnings (curl):
    &lt; HTTP/1.1 404 Not Found
    &lt; Date: Sun, 02 Aug 2026 14:05:21 GMT
    * no chunk, no close, no size. Assume close to signal end
</content>
</entry>
<entry>
<title>sstp: flush queued output on disconnect</title>
<updated>2026-08-02T14:36:00+00:00</updated>
<author>
<name>Vladislav Grishenko</name>
<email>themiron@mail.ru</email>
</author>
<published>2026-07-26T10:01:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=cbc1527ec446dcaa5b338db1f34d5789a162115c'/>
<id>urn:sha1:cbc1527ec446dcaa5b338db1f34d5789a162115c</id>
<content type='text'>
Drain out_queue to the stream in sstp_disconnect before closing, so a
queued response is sent before the connection is torn down. Best-effort,
non-blocking, via a sstp_flush() helper that mirrors sstp_write.

Fixes: 635ab1b7
</content>
</entry>
<entry>
<title>Revert "Fixes the issue #124 HTTP replay for non SSTP query"</title>
<updated>2026-08-02T14:36:00+00:00</updated>
<author>
<name>Vladislav Grishenko</name>
<email>themiron@mail.ru</email>
</author>
<published>2026-07-26T09:56:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=e9df37a8518548a6de415909eb90466d7a836f5e'/>
<id>urn:sha1:e9df37a8518548a6de415909eb90466d7a836f5e</id>
<content type='text'>
Reverts 635ab1b7, e7a03684, 382b02b6, 4fbba471 on
accel-pppd/ctrl/sstp/sstp.c:

  - http_send_response: sstp_send(buf) || sstp_write(&amp;hnd) -&gt; sstp_send(buf)
  - http_handler: drop the r/return 1 path
  - sstp_read: drop else if (n &gt; 0) return 1
  - remove the sstp_write forward decl
</content>
</entry>
<entry>
<title>metrics: expose session details in JSON output</title>
<updated>2026-08-02T01:51:09+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-02T01:13:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=edd9f9ce6fc0f99e751fde20b0bb55bbd6b3a2f9'/>
<id>urn:sha1:edd9f9ce6fc0f99e751fde20b0bb55bbd6b3a2f9</id>
<content type='text'>
Add an opt-in sessions setting for the JSON metrics renderer. Include session identity, addressing, protocol state, interface context, uptime, and traffic counters while keeping Prometheus output aggregate-only.

The session list is walked with ses_lock held, so report the accounting counters the session last sampled rather than calling ap_session_read_stats(): that issues a synchronous netlink round trip per session, which would stall session setup and teardown for the duration of a scrape, it writes back into the session while only the read lock is held, and it needs the thread local net of the session's namespace, which the metrics context does not have. Counter freshness therefore follows accounting, which the documentation spells out.

Escape malformed UTF-8 in peer supplied strings so a single bad username cannot make the whole document undecodable, and reserve room for the response header in front of the rendered body so a body that can be megabytes is not copied a second time.

Document the privacy-sensitive option in both accel-ppp.conf and the man page, and cover the empty session list, the aggregate-only Prometheus output and the response framing in the metrics integration test.
</content>
</entry>
<entry>
<title>sstp: express escape buffer bound as one invariant</title>
<updated>2026-07-26T08:19:24+00:00</updated>
<author>
<name>Vladislav Grishenko</name>
<email>themiron@mail.ru</email>
</author>
<published>2026-07-26T08:19:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=fd2cd2bce6328264ce9cb9bc371d7349319724a8'/>
<id>urn:sha1:fd2cd2bce6328264ce9cb9bc371d7349319724a8</id>
<content type='text'>
(size + PPP_FCSLEN) * 2 + 2 equals 8b781b94's size*2 + 2 + PPP_FCSLEN*2
but can't collapse back to the 1801847a under-allocating form.
</content>
</entry>
<entry>
<title>Merge pull request #335 from nuclearcat/docs/readme-markdown</title>
<updated>2026-07-19T21:11:36+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-07-19T21:11:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=93c6a21673f693640ec8004b063a3471f784f8fa'/>
<id>urn:sha1:93c6a21673f693640ec8004b063a3471f784f8fa</id>
<content type='text'>
Docs/readme markdown, configs updates, man updates</content>
</entry>
<entry>
<title>Merge pull request #328 from nuclearcat/radius-leak-fixes</title>
<updated>2026-07-18T21:56:35+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-07-18T21:56:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=0656937adf3aedaddc55e71aecb788f8856118fe'/>
<id>urn:sha1:0656937adf3aedaddc55e71aecb788f8856118fe</id>
<content type='text'>
Radius leak fixes</content>
</entry>
</feed>
