X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=socket_server.c;h=e1853d3ec20241fbcd1f429d3f66e6c6e05c42bc;hp=81ec55b6fcecc56f172d4af04cc9c0df04e00b9d;hb=b1ab2b9ac1cfc15d2a8f5850145dd69043cc3ef7;hpb=d2b113f2c4f11acfaee1b2e0fd2f03744a89f6d4 diff --git a/socket_server.c b/socket_server.c index 81ec55b..e1853d3 100644 --- a/socket_server.c +++ b/socket_server.c @@ -15,7 +15,7 @@ #include -char *socket_name = SOCKET_NAME; +char socket_name[128]; int sock = -1; struct sockaddr_un sock_address; @@ -36,6 +36,7 @@ int admin_init(void) } fhuse++; memset(&sock_address, 0, sizeof(sock_address)); + SPRINT(socket_name, SOCKET_NAME, options.lock); sock_address.sun_family = AF_UNIX; UCPY(sock_address.sun_path, socket_name); unlink(socket_name); @@ -66,6 +67,10 @@ int admin_init(void) PERROR("Failed to set socket \"%s\" into non-blocking mode. (errno=%d)\n", sock_address.sun_path, errno); return(-1); } + if (chmod(socket_name, options.socketrights) < 0) + { + PERROR("Failed to change socket rigts to %d. (errno=%d)\n", options.socketrights, errno); + } return(0); } @@ -176,6 +181,8 @@ void admin_cleanup(void) close(sock); fhuse--; } + + unlink(socket_name); } @@ -701,8 +708,8 @@ int admin_message_to_join(struct admin_msg *msg, struct admin_list *admin) } if (!join) { - PERROR("No join found with serial %d.\n", msg->ref); - return(-1); + PDEBUG(DEBUG_LOG, "No join found with serial %d. (May have been already released.)\n", msg->ref); + return(0); } /* check application */ @@ -919,6 +926,7 @@ int admin_state(struct admin_queue **responsep) response->am[num].u.i.busy[i] = mISDNport->b_state[i]; if (mISDNport->b_port[i]) response->am[num].u.i.port[i] = mISDNport->b_port[i]->p_serial; + response->am[num].u.i.mode[i] = mISDNport->b_mode[i]; i++; } }