Updated at September 7, 2026 01:25 PM
box.iproto.send()
Since version 2.11.0. Send an IPROTO packet over the session's socket with the given MsgPack header and body. The header and body contain exported IPROTO constants from the box.iproto() submodule. Possible IPROTO constant formats:
- a lowercase constant without the
IPROTO_prefix (schema_version,request_type) - a constant from the corresponding box.iproto subnamespace (
box.iproto.SCHEMA_VERSION,box.iproto.REQUEST_TYPE)
The function works for binary sessions only. For details, see box.session.type().
Parameters:
sid(number) — the IPROTO session identifier (see box.session.id())header(table|string) — a request header encoded as MsgPackbody(table|string|nil) — a request body encoded as MsgPack
Returns
0 on success, otherwise an error is raised
Return type
number
Possible errors:
ER_SESSION_CLOSED– the session is closed.ER_NO_SUCH_SESSION– the session does not exist.ER_MEMORY_ISSUE– out-of-memory limit has been reached.ER_WRONG_SESSION_TYPE– the session type is not binary.
For details, see src/box/errcode.h.
Examples:
Send a packet using Lua tables and string IPROTO constants as keys:
box.iproto.send(box.session.id(),{ request_type = box.iproto.type.OK,sync = 10,schema_version = box.info.schema_version },{ data = 1 })
Send a packet using Lua tables and numeric IPROTO constants:
box.iproto.send(box.session.id(),{ [box.iproto.key.REQUEST_TYPE] = box.iproto.type.OK,[box.iproto.key.SYNC] = 10,[box.iproto.key.SCHEMA_VERSION] = box.info.schema_version },{ [box.iproto.key.DATA] = 1 })
Send a packet that contains only the header:
box.iproto.send(box.session.id(),{ request_type = box.iproto.type.OK,sync = 10,schema_version = box.info.schema_version })