A PPTP connection transports payload data by wrapping it into PPP and then sending it over a previously negotiated Enhanced GRE link.
As per PPTP RFC, the following holds true:
The encapsulated PPP packets are essentially PPP data packets less any media specific framing elements. No HDLC flags, bit insertion, control characters, or control character escapes are included. No CRCs are sent through the tunnel.
So nothing of the PPP data must be escaped and all characters are treated as ordinary characters and not control characters.
However PPTP also defines a
Set-Link-Info message in section 2.15. Set-Link-Info and the only purpose of this message is to set the ACCMs, which stands for Asynchronous Control Character Map. It also defines, that unless this message is sent, the other side shall assume
0xFFFFFFFF as default.
The only purpose of the ACCM is to tell the other side which control characters must be escaped but section 4 forbids escaping of control characters, so what purpose has setting an ACCM other than zero? And what behavior is expected if the default value says all characters below ASCII code 32 must be escaped, yet escaping is forbidden?
All implementations I found simply ignore the ACCM entirely and never escape anything, yet this makes the
Set-Link-Info message completely pointless as it will never have an effect. Can someone shine a light on this contradiction?