Un autre petit truc sur asterisk : si le chemin astrundir est peu grand ( 108 caractères - strlen("asterisk.ctl") ) sur linux, le fichier asterisk.ctl ne sera pas créé. Ca n'empêche pas asterisk de démarrer, mais impossible de s'y connecter en console. Le message d'erreur un un peu stupide puisque ça dit : "fichier inexistant"
108 caractères pour un chemin vers un socket nommé. Pas mal, non, en 2017 ! Facile d'éviter le problème :
remplacez, dans asterisk.c (ligne 1778 pour asterisk 13.7.2) :
res = bind(ast_socket, (struct sockaddr *)&sunaddr, sizeof(sunaddr));
par
char buf[MAXPATHLEN+1];
char* cwd = getcwd(buf, MAXPATHLEN);
char dir[MAXPATHLEN+1];
strncpy(dir, ast_config_AST_SOCKET, MAXPATHLEN);
chdir(dirname(dir));
char base[MAXPATHLEN+1];
strncpy(base, ast_config_AST_SOCKET, MAXPATHLEN);
ast_copy_string(sunaddr.sun_path, basename(base), strlen(basename(base)));
res = bind(ast_socket, (struct sockaddr *)&sunaddr, sizeof(sunaddr));
chdir(cwd);
en gros, on se place dans le répertoire (dieu merci, chdir accepte plus de 108 chars), et on cré le socket juste avec son nom (basename).