ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
config.h File Reference

Go to the source code of this file.

Functions

asciichat_error_t webrtc_turn_servers_parse (const char *csv_urls, const char *username, const char *credential, turn_server_t *servers, size_t capacity, size_t *count_out)

Function Documentation

◆ webrtc_turn_servers_parse()

asciichat_error_t webrtc_turn_servers_parse ( const char * csv_urls,
const char * username,
const char * credential,
turn_server_t * servers,
size_t capacity,
size_t * count_out )

Parse TURN URLs and apply one set of credentials to every endpoint.

Definition at line 9 of file network/webrtc/config.c.

10 {
11 if (!csv_urls || !username || !credential || !servers || !count_out || capacity == 0)
12 return SET_ERRNO(ERROR_INVALID_PARAM, "Invalid TURN server configuration");
13
14 *count_out = 0;
15 if (!csv_urls[0] || !username[0] || !credential[0])
16 return ASCIICHAT_OK;
17
18 char copy[OPTIONS_BUFF_SIZE];
19 SAFE_STRNCPY(copy, csv_urls, sizeof(copy));
20 char *saveptr = NULL;
21 char *token = platform_strtok_r(copy, ",", &saveptr);
22 while (token && *count_out < capacity) {
23 while (*token == ' ' || *token == '\t')
24 token++;
25 size_t len = strlen(token);
26 while (len && (token[len - 1] == ' ' || token[len - 1] == '\t'))
27 token[--len] = '\0';
28 if (len >= sizeof(servers[*count_out].url))
29 return SET_ERRNO(ERROR_INVALID_PARAM, "TURN URL is too long");
30 if (len) {
31 turn_server_t *server = &servers[*count_out];
32 server->url_len = (uint8_t)len;
33 SAFE_STRNCPY(server->url, token, sizeof(server->url));
34 SAFE_STRNCPY(server->username, username, sizeof(server->username));
35 server->username_len = (uint8_t)strlen(server->username);
36 SAFE_STRNCPY(server->credential, credential, sizeof(server->credential));
37 server->credential_len = (uint8_t)strlen(server->credential);
38 (*count_out)++;
39 }
40 token = platform_strtok_r(NULL, ",", &saveptr);
41 }
42 return ASCIICHAT_OK;
43}
#define SET_ERRNO(code,...)
#define SAFE_STRNCPY(dst, src, size)
Definition common.h:423
unsigned char uint8_t
Definition common.h:60
@ ASCIICHAT_OK
Definition error_codes.h:46
@ ERROR_INVALID_PARAM
#define OPTIONS_BUFF_SIZE
Buffer size for option string values.
Definition options.h:310
turn_server_t
Definition turn.h:106

References ASCIICHAT_OK, ERROR_INVALID_PARAM, OPTIONS_BUFF_SIZE, SAFE_STRNCPY, SET_ERRNO, and turn_server_t.