nx_https_post_complete.nx
buildroot/runtime/nx_https_post_complete.nx
about
nx_https_post_complete.nx -- HTTPS POST companion to
nx_https_get_complete. Sends an HTTP/1.1 POST request with a
caller-supplied body (typically application/jose+json for ACME)
over a CONNECTED TLS 1.3 session, then drains the encrypted
response into out_buf.
Composes:
nx_http_client_build_request_post -- POST line + headers + body
nx_tls13_record_encrypt_v2 -- AEAD wrap (one or more request records)
nx_tls13_read_record_from_fd -- partial-read framer
nx_tls13_record_decrypt_v2 -- AEAD unwrap per response rec
Body size: UNBOUNDED by this module (2026-09-04). The old 8 KB ceiling was not a statement about
bodies -- it was an under-approximation of the TLS record limit, needed while the request was
written as a SINGLE record. nx_https_req_complete now fragments across records and the request
buffer is derived from body_len, so neither constraint remains. The instruction this paragraph
used to give -- 'caller should fragment larger payloads explicitly' -- was never followed by any
caller: they inherited the ceiling as a hand-picked constant instead, which is how the sovereign
content shipper spent eleven days unable to send the chunks its own server offered.
Verdict mirrors NX_HTTPS_GC_* with a PC prefix; same sealed-enum
shape (positive bytes on success, negative -verdict on failure).
Per Cardinals 9 (single-responsibility -- ONE round trip), 22
(composition of shipped primitives), 25 (build intelligence, don't
strip features -- adds POST capability without weakening GET).
license_tier: INDEPENDENT_REDERIVE
genealogy_id: international-research-sources/ietf/rfc_8446 + rfc_9112 + rfc_8555
lineage_id: nishi_https_post_complete_q1
dependencies 7 imports · 11 importers
diagram shows first 10 each side; +0 more imports, +1 more importers in the complete lists below.
imports: nx_syscalls.nxnx_tls13.nxnx_tls13_record.nxnx_tls13_read_record_from_fd.nxnx_tls13_client_session.nxnx_http_client.nxnx_https_get_complete.nx
imported by: nx_acme_http.nxnx_cam_chaturbate_probe.nxnx_connect_live_verify.nxnx_crew_live_verify.nxnx_edge_probe.nxnx_funcheck.nxnx_https_post_complete_test.nxnx_https_post_lib.nxnx_office_live_verify.nxnx_porkbun_ping_probe.nxnx_survey_live_verify.nx
structs
| none |
consts
| 40 | const NX_HTTPS_PC_OK: i64 = 1 |
| 41 | const NX_HTTPS_PC_BAD_STATE: i64 = 2 |
| 42 | const NX_HTTPS_PC_BUILD_FAIL: i64 = 3 |
| 43 | const NX_HTTPS_PC_ENCRYPT_FAIL: i64 = 4 |
| 44 | const NX_HTTPS_PC_WRITE_FAIL: i64 = 5 |
| 45 | const NX_HTTPS_PC_READ_FAIL: i64 = 6 |
| 46 | const NX_HTTPS_PC_DECRYPT_FAIL: i64 = 7 |
| 47 | const NX_HTTPS_PC_BUF_OVERFLOW: i64 = 8 |
| 48 | const NX_HTTPS_PC_BODY_TOO_BIG: i64 = 9 |
| 49 | const NX_HTTPS_PC_VERDICT_N: i64 = 10 |
| 51 | const NX_HTTPS_PC_REQ_BUF_BYTES: i64 = 16384 // header (~512) + body (<= 8 KB) + slack |
| 52 | const NX_HTTPS_PC_BODY_BYTES: i64 = 8192 |
| 53 | const NX_HTTPS_PC_RESP_RECORD_BYTES: i64 = 16645 |
| 54 | const NX_HTTPS_PC_POST_HDR_SLACK: i64 = 128 // Content-Type: + Content-Length: <n> + CRLFs |
functions
| 56 | func nx_https_pc_verdict_is_valid(v: i64) -> i64 called by 1: main |
| 62 | func _pc_write_n(fd: i64, buf: *u8, n: i64) -> i64 calls 1: sys_write |
| 72 | func nx_https_post_complete( |
| 139 | func nx_https_post_complete_xhdr( |
| 185 | func main() -> i64 |