Skip to content

doc: convert RELP specification to Markdown#293

Draft
sapunyangkut wants to merge 1 commit into
rsyslog:masterfrom
sapunyangkut:codex/issue-271-convert-relp-doc
Draft

doc: convert RELP specification to Markdown#293
sapunyangkut wants to merge 1 commit into
rsyslog:masterfrom
sapunyangkut:codex/issue-271-convert-relp-doc

Conversation

@sapunyangkut

@sapunyangkut sapunyangkut commented Jul 12, 2026

Copy link
Copy Markdown

Summary

  • convert the RELP protocol specification from HTML to GitHub-flavored Markdown
  • preserve the document's visible text, links, heading hierarchy, and preformatted protocol examples
  • update the distribution manifest to ship relp.md instead of relp.html

Closes #271.

Validation

  • compared all 3,141 whitespace-delimited visible-text tokens and all 5 links between the HTML source and Markdown output
  • rendered the document with GitHub's Markdown API and verified 25 headings, 4 code blocks, no accidental ordered lists, and no raw script content
  • ran autoreconf -fi, ./configure, and make dist; the archive contains doc/relp.md and doc/gfdl.html
  • ran basic-sessionbreak-vg.sh in isolation against both upstream master and this branch; both passed

The full make distcheck run passed 28 tests, skipped 1, and hit one non-deterministic failure in basic-sessionbreak-vg.sh; the failing test passed when rerun in isolation on both the unchanged base and this branch.

AI assistance

This documentation conversion was prepared with AI assistance. The semantic-parity checks, GitHub rendering checks, build/distribution checks, and an independent diff review were completed before submission.


Summary by cubic

Converted the RELP protocol specification from HTML to GitHub-flavored Markdown and updated the build to distribute relp.md. Closes #271; preserves visible text, links, heading hierarchy, and code/preformatted examples for better GitHub rendering and maintenance.

  • Migration
    • Update any references from doc/relp.html to doc/relp.md.

Written for commit c2a9c58. Summary will update on new commits.

Review in cubic

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request converts the RELP specification document from HTML (doc/relp.html) to Markdown (doc/relp.md) and updates the Makefile accordingly. The review feedback focuses on correcting various typographical errors, spelling mistakes (such as 'ressources', 'intial', 'absued', and 'invokation'), grammatical inconsistencies, and an ABNF definition mismatch in the newly added Markdown file.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread doc/relp.md

## DESCRIPTION OF THE RELP PROTOCOL

Relp uses a client-server model with (mostly fixed roles. The initiating part

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is an unmatched parenthesis in (mostly. It should be (mostly) or simply mostly.

Suggested change
Relp uses a client-server model with (mostly fixed roles. The initiating part
Relp uses a client-server model with (mostly) fixed roles. The initiating part

Comment thread doc/relp.md
Comment on lines +22 to +23
outstanding at a given time. The server may reply in any order. To conserve
ressources, the number of outstanding commands is limited by a window. Each

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word ressources is misspelled. It should be resources.

Suggested change
outstanding at a given time. The server may reply in any order. To conserve
ressources, the number of outstanding commands is limited by a window. Each
outstanding at a given time. The server may reply in any order. To conserve
resources, the number of outstanding commands is limited by a window. Each

Comment thread doc/relp.md
Comment on lines +35 to +36
timeouts a sessions where the client has not sent any data for an extended
period of time (this probably is a good thing to conserve server ressources).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Correct the grammatical error timeouts a sessions to timeouts a session (or times out a session) and the spelling of ressources to resources.

Suggested change
timeouts a sessions where the client has not sent any data for an extended
period of time (this probably is a good thing to conserve server ressources).
timeouts a session where the client has not sent any data for an extended
period of time (this probably is a good thing to conserve server resources).

Comment thread doc/relp.md
Comment on lines +108 to +110
RSP-HEADER = TXNR SP RSP-CODE [SP HUMANMSG] LF [CMDDATA]
RSP-CODE = 200 / 500 ; 200 is ok, all the rest currently erros
HUAMANMSG = *OCTET ; a human-readble message without LF in it

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is an inconsistency in the ABNF definition: RSP-HEADER references HUMANMSG, but the definition below it is spelled HUAMANMSG. Additionally, erros is a typo for errors, and human-readble is a typo for human-readable.

Suggested change
RSP-HEADER = TXNR SP RSP-CODE [SP HUMANMSG] LF [CMDDATA]
RSP-CODE = 200 / 500 ; 200 is ok, all the rest currently erros
HUAMANMSG = *OCTET ; a human-readble message without LF in it
RSP-HEADER = TXNR SP RSP-CODE [SP HUMANMSG] LF [CMDDATA]
RSP-CODE = 200 / 500 ; 200 is ok, all the rest currently errors
HUMANMSG = *OCTET ; a human-readable message without LF in it

Comment thread doc/relp.md
Comment on lines +188 to +192
server-closed connection even if the server does not send a "serverclose"
hint. In thus case, it must rely on the transport layer connection status. The
primary utility of "serverclose" is to enable the client to quickly detect a
server-closed connection, clean up ressources and go into termination (or
recovery code).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Correct the typos In thus case to In this case and ressources to resources.

Suggested change
server-closed connection even if the server does not send a "serverclose"
hint. In thus case, it must rely on the transport layer connection status. The
primary utility of "serverclose" is to enable the client to quickly detect a
server-closed connection, clean up ressources and go into termination (or
recovery code).
server-closed connection even if the server does not send a 'serverclose'
hint. In this case, it must rely on the transport layer connection status. The
primary utility of 'serverclose' is to enable the client to quickly detect a
server-closed connection, clean up resources and go into termination (or
recovery code).

Comment thread doc/relp.md
Comment on lines +300 to +301
I define this use case in support of [rsyslog](http://www.rsyslog.com) and
other possible clients which try to reduce ressource consumption.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word ressource is misspelled. It should be resource.

Suggested change
I define this use case in support of [rsyslog](http://www.rsyslog.com) and
other possible clients which try to reduce ressource consumption.
I define this use case in support of [rsyslog](http://www.rsyslog.com) and
other possible clients which try to reduce resource consumption.

Comment thread doc/relp.md
server sends the response packet. Thus, the tcp stacks receive buffer buffers
the server's response until the client has another message to send. Then, the
client first checks for any outstanding responses, processes them and then
send the new message. It is expected that in this scenario, each client

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word invokation is misspelled. It should be invocation.

Suggested change
send the new message. It is expected that in this scenario, each client
invocation will process the past response and send a new packet. The response

Comment thread doc/relp.md
but by the next one. So we always have one outstanding response inside the OS
buffers. Now consider the server is shutting down the connection due to
timeout or due to the fact that it needs to shutdown itself (maybe even on an
urgent case, like power failure - the point is it can not wait). On next client

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word invokation is misspelled. It should be invocation.

Suggested change
urgent case, like power failure - the point is it can not wait). On next client
invocation, the client finds an outstanding response and processes it. Then,

Comment thread doc/relp.md
urgent case, like power failure - the point is it can not wait). On next client
invokation, the client finds an outstanding response and processes it. Then,
it tries to send a new command. That will fail, because the connection has been
terminated. The usual session recovery logic is used to restablish the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word restablish is misspelled. It should be re-establish or reestablish.

Suggested change
terminated. The usual session recovery logic is used to restablish the
terminated. The usual session recovery logic is used to re-establish the

Comment thread doc/relp.md
Comment on lines +361 to +362
case. As such, acks are potentially lost. This will lead to message duplication
as the client assumes that the frames unacked at time of force-close where not

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The word where is misspelled/incorrectly used here. It should be were.

Suggested change
case. As such, acks are potentially lost. This will lead to message duplication
as the client assumes that the frames unacked at time of force-close where not
as the client assumes that the frames unacked at time of force-close were not
processed (there is no other safe assumption). Consequently, the client will

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

doc: convert relp.html to a markdown document

1 participant