Client-Server interaction
-------------------------
To execute a server call, the client opens the daemon's UNIX domain
socket (as specified by SYSCONFDIR/socket-file), and sends across the
following data:
Size Type Description
1 int Protocol number (always 2)
2 int Total length of all data
1 int Number of arguments following the command
varies string Command name
varies strings Arguments
It then receives the following response from the server:
Size Type Description
1 int Response code: one of the following
0: OK -- operation succeeded
1: Bad -- error in format or syntax
2: Error -- operation failed
varies string Message
Strings are encoded as:
Size Type Description
2 int Length of string
length char String data (no trailing NUL byte)
All integers are unsigned, sent MSB first.
Example:
0x02 Protocol version
0x00 0x2E Length of everything from this point on
0x02 Number of arguments to command
0x00 0x0A Length of command name (command name will become a
number later)
listdomain Command name
0x00 0x15 Length of first argument
mailtest.somesuch.dom First argument
0x00 0x08 Length of second argument
mailtest Second argument