33 if (req->capabilities & ~0x03) {
38 if (req->max_participants < 1 || req->max_participants > 8) {
43 if (req->server_address[0] ==
'\0') {
48 if (req->server_port == 0) {
66 if (req->session_string[0] ==
'\0') {
83 error_message =
"Unknown error";
87 memset(&error_packet, 0,
sizeof(error_packet));
91 size_t msg_len = strlen(error_message);
92 if (msg_len >=
sizeof(error_packet.error_message)) {
93 msg_len =
sizeof(error_packet.error_message) - 1;
95 memcpy(error_packet.error_message, error_message, msg_len);
96 error_packet.error_message[msg_len] =
'\0';
asciichat_error_t error_code
acip_error_code_t
ACIP error codes.
#define ACIP_MAX_SESSION_STRING_LEN
Maximum session string length (e.g., "swift-river-mountain" = 20 chars)
asciichat_error_t acip_server_send_error(socket_t sockfd, acip_error_code_t error_code, const char *error_message)
Send ACIP error response to client.
asciichat_error_t acip_server_validate_session_join(const acip_session_join_t *req)
Validate ACIP session join request.
asciichat_error_t acip_server_validate_session_create(const acip_session_create_t *req)
Validate ACIP session create request.
#define SET_ERRNO(code, context_msg,...)
Set error code with custom context message and log it.
asciichat_error_t
Error and exit codes - unified status values (0-255)
int send_packet(socket_t sockfd, packet_type_t type, const void *data, size_t len)
Send a basic packet without encryption.
@ PACKET_TYPE_ACIP_ERROR
Generic error response (Discovery Server -> Client)
📝 Logging API with multiple log levels and terminal output control
Packet protocol implementation with encryption and compression support.