mirror of
https://salsa.debian.org/ha-team/libqb
synced 2026-08-25 01:30:51 +00:00
Bring some changes across from corosync.
My coverity fixes and honzas fixes. Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
This commit is contained in:
parent
7a90cdda1f
commit
e6d5f32f9f
@ -23,6 +23,7 @@
|
||||
#define QB_LOGSYS_H_DEFINED
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <syslog.h>
|
||||
#include <pthread.h>
|
||||
@ -96,7 +97,7 @@ extern "C" {
|
||||
/*
|
||||
* rec_ident explained:
|
||||
*
|
||||
* rec_ident is an unsigned int and carries bitfields information
|
||||
* rec_ident is an uint32_t and carries bitfields information
|
||||
* on subsys_id, log priority (level) and type of message (RECID).
|
||||
*
|
||||
* level values are imported from syslog.h.
|
||||
@ -141,38 +142,40 @@ extern "C" {
|
||||
|
||||
#ifndef QB_LOGSYS_UTILS_ONLY
|
||||
|
||||
int _logsys_system_setup(const char *mainsystem,
|
||||
unsigned int mode,
|
||||
unsigned int debug,
|
||||
const char *logfile,
|
||||
int logfile_priority,
|
||||
int syslog_facility, int syslog_priority);
|
||||
int32_t _logsys_system_setup(const char *mainsystem,
|
||||
uint32_t mode,
|
||||
uint32_t debug,
|
||||
const char *logfile,
|
||||
int32_t logfile_priority,
|
||||
int32_t syslog_facility, int32_t syslog_priority);
|
||||
|
||||
int _logsys_config_subsys_get(const char *subsys);
|
||||
int32_t _logsys_config_subsys_get(const char *subsys);
|
||||
|
||||
unsigned int _logsys_subsys_create(const char *subsys);
|
||||
uint32_t _logsys_subsys_create(const char *subsys);
|
||||
|
||||
int _logsys_rec_init(unsigned int size);
|
||||
int32_t _logsys_rec_init(uint32_t size);
|
||||
|
||||
void _logsys_log_vprintf(unsigned int rec_ident,
|
||||
void _logsys_log_vprintf(uint32_t rec_ident,
|
||||
const char *function_name,
|
||||
const char *file_name,
|
||||
int file_line, const char *format, va_list ap)
|
||||
__attribute__ ((format(printf, 5, 0)));
|
||||
int32_t file_line,
|
||||
const char *format,
|
||||
va_list ap) __attribute__ ((format(printf, 5, 0)));
|
||||
|
||||
void _logsys_log_printf(unsigned int rec_ident,
|
||||
void _logsys_log_printf(uint32_t rec_ident,
|
||||
const char *function_name,
|
||||
const char *file_name,
|
||||
int file_line, const char *format, ...)
|
||||
__attribute__ ((format(printf, 5, 6)));
|
||||
int32_t file_line,
|
||||
const char *format,
|
||||
...) __attribute__ ((format(printf, 5, 6)));
|
||||
|
||||
void _logsys_log_rec(unsigned int rec_ident,
|
||||
void _logsys_log_rec(uint32_t rec_ident,
|
||||
const char *function_name,
|
||||
const char *file_name, int file_line, ...);
|
||||
const char *file_name, int32_t file_line, ...);
|
||||
|
||||
int _logsys_wthread_create(void);
|
||||
int32_t _logsys_wthread_create(void);
|
||||
|
||||
static int qb_logsys_subsys_id __attribute__ ((unused)) =
|
||||
static int32_t qb_logsys_subsys_id __attribute__ ((unused)) =
|
||||
QB_LOGSYS_MAX_SUBSYS_COUNT;
|
||||
|
||||
/*
|
||||
@ -192,7 +195,7 @@ void qb_logsys_atexit(void);
|
||||
*/
|
||||
void qb_logsys_flush(void);
|
||||
|
||||
int qb_logsys_log_rec_store(const char *filename);
|
||||
int32_t qb_logsys_log_rec_store(const char *filename);
|
||||
|
||||
/*
|
||||
* External API - configuration
|
||||
@ -201,7 +204,7 @@ int qb_logsys_log_rec_store(const char *filename);
|
||||
/*
|
||||
* configuration bits that can only be done for the whole system
|
||||
*/
|
||||
int qb_logsys_format_set(const char *format);
|
||||
int32_t qb_logsys_format_set(const char *format);
|
||||
|
||||
char *qb_logsys_format_get(void);
|
||||
|
||||
@ -213,52 +216,50 @@ char *qb_logsys_format_get(void);
|
||||
*
|
||||
* Pass a NULL subsystem to change them all
|
||||
*/
|
||||
unsigned int qb_logsys_config_syslog_facility_set(const char
|
||||
*subsys,
|
||||
unsigned int facility);
|
||||
int32_t qb_logsys_config_syslog_facility_set(const char *subsys,
|
||||
uint32_t facility);
|
||||
|
||||
unsigned int qb_logsys_config_syslog_priority_set(const char
|
||||
*subsys,
|
||||
unsigned int priority);
|
||||
int32_t qb_logsys_config_syslog_priority_set(const char *subsys,
|
||||
uint32_t priority);
|
||||
|
||||
unsigned int qb_logsys_config_mode_set(const char *subsys, unsigned int mode);
|
||||
int32_t qb_logsys_config_mode_set(const char *subsys, uint32_t mode);
|
||||
|
||||
unsigned int qb_logsys_config_mode_get(const char *subsys);
|
||||
uint32_t qb_logsys_config_mode_get(const char *subsys);
|
||||
|
||||
/*
|
||||
* to close a logfile, just invoke this function with a NULL
|
||||
* file or if you want to change logfile, the old one will
|
||||
* be closed for you.
|
||||
*/
|
||||
int qb_logsys_config_file_set(const char *subsys,
|
||||
const char **error_string, const char *file);
|
||||
int32_t qb_logsys_config_file_set(const char *subsys,
|
||||
const char **error_string, const char *file);
|
||||
|
||||
unsigned int qb_logsys_config_logfile_priority_set(const char
|
||||
*subsys,
|
||||
unsigned int priority);
|
||||
int32_t qb_logsys_config_logfile_priority_set(const char *subsys,
|
||||
uint32_t priority);
|
||||
|
||||
/*
|
||||
* enabling debug, disable message priority filtering.
|
||||
* everything is sent everywhere. priority values
|
||||
* for file and syslog are not overwritten.
|
||||
*/
|
||||
unsigned int qb_logsys_config_debug_set(const char *subsys, unsigned int value);
|
||||
int32_t qb_logsys_config_debug_set(const char *subsys, uint32_t value);
|
||||
|
||||
/*
|
||||
* External API - helpers
|
||||
*
|
||||
* convert facility/priority to/from name/values
|
||||
*/
|
||||
int qb_logsys_facility_id_get(const char *name);
|
||||
int32_t qb_logsys_facility_id_get(const char *name);
|
||||
|
||||
const char *qb_logsys_facility_name_get(unsigned int facility);
|
||||
const char *qb_logsys_facility_name_get(uint32_t facility);
|
||||
|
||||
int qb_logsys_priority_id_get(const char *name);
|
||||
int32_t qb_logsys_priority_id_get(const char *name);
|
||||
|
||||
const char *qb_logsys_priority_name_get(unsigned int priority);
|
||||
const char *qb_logsys_priority_name_get(uint32_t priority);
|
||||
|
||||
int qb_logsys_thread_priority_set(int policy, const struct sched_param
|
||||
*param, unsigned int after_log_ops_yield);
|
||||
int32_t qb_logsys_thread_priority_set(int32_t policy,
|
||||
const struct sched_param *param,
|
||||
uint32_t after_log_ops_yield);
|
||||
|
||||
/*
|
||||
* External definitions
|
||||
|
||||
161
lib/ipcc.c
161
lib/ipcc.c
@ -255,11 +255,16 @@ circular_memory_map(char *path, const char *file, void **buf, size_t bytes)
|
||||
}
|
||||
|
||||
res = ftruncate(fd, bytes);
|
||||
if (res == -1) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
addr_orig = mmap(NULL, bytes << 1, PROT_NONE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
|
||||
if (addr_orig == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@ -267,6 +272,7 @@ circular_memory_map(char *path, const char *file, void **buf, size_t bytes)
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
|
||||
if (addr != addr_orig) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
@ -276,6 +282,10 @@ circular_memory_map(char *path, const char *file, void **buf, size_t bytes)
|
||||
addr = mmap(((char *)addr_orig) + bytes,
|
||||
bytes, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
if (addr == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
madvise(((char *)addr_orig) + bytes, bytes, MADV_NOSYNC);
|
||||
#endif
|
||||
@ -329,11 +339,16 @@ static int memory_map(char *path, const char *file, void **buf, size_t bytes)
|
||||
}
|
||||
|
||||
res = ftruncate(fd, bytes);
|
||||
if (res == -1) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
addr_orig = mmap(NULL, bytes, PROT_NONE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
|
||||
if (addr_orig == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@ -341,6 +356,7 @@ static int memory_map(char *path, const char *file, void **buf, size_t bytes)
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
|
||||
if (addr != addr_orig) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
@ -405,45 +421,66 @@ retry_semop:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t
|
||||
reply_receive(struct ipc_instance *ipc_instance, void *res_msg, size_t res_len)
|
||||
static int32_t ipc_sem_wait(struct ipc_instance *ipc_instance, int sem_num)
|
||||
{
|
||||
#if _POSIX_THREAD_PROCESS_SHARED < 1
|
||||
struct sembuf sop;
|
||||
#else
|
||||
struct timespec timeout;
|
||||
struct pollfd pfd;
|
||||
sem_t *sem = NULL;
|
||||
#endif
|
||||
qb_ipc_response_header_t *response_header;
|
||||
int res;
|
||||
|
||||
#if _POSIX_THREAD_PROCESS_SHARED > 0
|
||||
switch (sem_num) {
|
||||
case 0:
|
||||
sem = &ipc_instance->control_buffer->sem0;
|
||||
break;
|
||||
case 1:
|
||||
sem = &ipc_instance->control_buffer->sem1;
|
||||
break;
|
||||
case 2:
|
||||
sem = &ipc_instance->control_buffer->sem2;
|
||||
break;
|
||||
}
|
||||
|
||||
retry_semwait:
|
||||
timeout.tv_sec = time(NULL) + IPC_SEMWAIT_TIMEOUT;
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
res = sem_timedwait(&ipc_instance->control_buffer->sem1, &timeout);
|
||||
res = sem_timedwait(sem, &timeout);
|
||||
if (res == -1 && errno == ETIMEDOUT) {
|
||||
pfd.fd = ipc_instance->fd;
|
||||
pfd.events = 0;
|
||||
|
||||
poll(&pfd, 1, 0);
|
||||
if (pfd.revents == POLLERR || pfd.revents == POLLHUP) {
|
||||
res = poll(&pfd, 1, 0);
|
||||
|
||||
if (res == -1 && errno == EINTR) {
|
||||
return EAGAIN;
|
||||
} else if (res == -1) {
|
||||
return EBADE;
|
||||
}
|
||||
|
||||
goto retry_semwait;
|
||||
}
|
||||
if (res == 1) {
|
||||
if (pfd.revents == POLLERR || pfd.revents == POLLHUP
|
||||
|| pfd.revents == POLLNVAL) {
|
||||
return EBADE;
|
||||
}
|
||||
}
|
||||
|
||||
if (res == -1 && errno == EINTR) {
|
||||
goto retry_semwait;
|
||||
} else if (res == -1 && errno == EINTR) {
|
||||
return EAGAIN;
|
||||
} else if (res == -1) {
|
||||
return EBADE;
|
||||
}
|
||||
#else
|
||||
/*
|
||||
* Wait for semaphore #1 indicating a new message from server
|
||||
* to client in the response queue
|
||||
* Wait for semaphore indicating a new message from server
|
||||
* to client in queue
|
||||
*/
|
||||
sop.sem_num = 1;
|
||||
sop.sem_num = sem_num;
|
||||
sop.sem_op = -1;
|
||||
sop.sem_flg = 0;
|
||||
|
||||
@ -455,14 +492,26 @@ retry_semop:
|
||||
priv_change_send(ipc_instance);
|
||||
goto retry_semop;
|
||||
} else if (res == -1) {
|
||||
return (EBADE);
|
||||
return EBAD;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t
|
||||
reply_receive(struct ipc_instance *ipc_instance, void *res_msg, size_t res_len)
|
||||
{
|
||||
qb_ipc_response_header_t *response_header;
|
||||
int32_t err = 0;
|
||||
|
||||
if ((err = ipc_sem_wait(ipc_instance, 1)) != 0) {
|
||||
return (err);
|
||||
}
|
||||
|
||||
response_header =
|
||||
(qb_ipc_response_header_t *) ipc_instance->response_buffer;
|
||||
if (response_header->error == EAGAIN) {
|
||||
return EAGAIN;
|
||||
return (EAGAIN);
|
||||
}
|
||||
|
||||
memcpy(res_msg, ipc_instance->response_buffer, res_len);
|
||||
@ -472,56 +521,12 @@ retry_semop:
|
||||
static int32_t
|
||||
reply_receive_in_buf(struct ipc_instance *ipc_instance, void **res_msg)
|
||||
{
|
||||
#if _POSIX_THREAD_PROCESS_SHARED < 1
|
||||
struct sembuf sop;
|
||||
#else
|
||||
struct timespec timeout;
|
||||
struct pollfd pfd;
|
||||
#endif
|
||||
int res;
|
||||
int32_t err;
|
||||
|
||||
#if _POSIX_THREAD_PROCESS_SHARED > 0
|
||||
retry_semwait:
|
||||
timeout.tv_sec = time(NULL) + IPC_SEMWAIT_TIMEOUT;
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
res = sem_timedwait(&ipc_instance->control_buffer->sem1, &timeout);
|
||||
if (res == -1 && errno == ETIMEDOUT) {
|
||||
pfd.fd = ipc_instance->fd;
|
||||
pfd.events = 0;
|
||||
|
||||
poll(&pfd, 1, 0);
|
||||
if (pfd.revents == POLLERR || pfd.revents == POLLHUP) {
|
||||
return EBADE;
|
||||
}
|
||||
|
||||
goto retry_semwait;
|
||||
if ((err = ipc_sem_wait(ipc_instance, 1)) != 0) {
|
||||
return (err);
|
||||
}
|
||||
|
||||
if (res == -1 && errno == EINTR) {
|
||||
goto retry_semwait;
|
||||
}
|
||||
#else
|
||||
/*
|
||||
* Wait for semaphore #1 indicating a new message from server
|
||||
* to client in the response queue
|
||||
*/
|
||||
sop.sem_num = 1;
|
||||
sop.sem_op = -1;
|
||||
sop.sem_flg = 0;
|
||||
|
||||
retry_semop:
|
||||
res = semop(ipc_instance->semid, &sop, 1);
|
||||
if (res == -1 && errno == EINTR) {
|
||||
return (EAGAIN);
|
||||
} else if (res == -1 && errno == EACCES) {
|
||||
priv_change_send(ipc_instance);
|
||||
goto retry_semop;
|
||||
} else if (res == -1) {
|
||||
return (EBADE);
|
||||
}
|
||||
#endif
|
||||
|
||||
*res_msg = (char *)ipc_instance->response_buffer;
|
||||
return 0;
|
||||
}
|
||||
@ -632,7 +637,6 @@ qb_ipcc_service_connect(const char *socket_name,
|
||||
sem_init(&ipc_instance->control_buffer->sem1, 1, 0);
|
||||
sem_init(&ipc_instance->control_buffer->sem2, 1, 0);
|
||||
#else
|
||||
|
||||
/*
|
||||
* Allocate a semaphore segment
|
||||
*/
|
||||
@ -651,6 +655,7 @@ qb_ipcc_service_connect(const char *socket_name,
|
||||
* an existing shared memory segment for which we have access
|
||||
*/
|
||||
if (errno != EEXIST && errno != EACCES) {
|
||||
res = EBAD;
|
||||
goto error_exit;
|
||||
}
|
||||
}
|
||||
@ -658,11 +663,13 @@ qb_ipcc_service_connect(const char *socket_name,
|
||||
semun.val = 0;
|
||||
res = semctl(ipc_instance->semid, 0, SETVAL, semun);
|
||||
if (res != 0) {
|
||||
res = EBAD;
|
||||
goto error_exit;
|
||||
}
|
||||
|
||||
res = semctl(ipc_instance->semid, 1, SETVAL, semun);
|
||||
if (res != 0) {
|
||||
res = EBAD;
|
||||
goto error_exit;
|
||||
}
|
||||
#endif
|
||||
@ -877,12 +884,9 @@ error_put:
|
||||
|
||||
int32_t qb_ipcc_dispatch_put(qb_hdb_handle_t handle)
|
||||
{
|
||||
#if _POSIX_THREAD_PROCESS_SHARED < 1
|
||||
struct sembuf sop;
|
||||
#endif
|
||||
qb_ipc_response_header_t *header;
|
||||
struct ipc_instance *ipc_instance;
|
||||
int res;
|
||||
int32_t res;
|
||||
char *addr;
|
||||
unsigned int read_idx;
|
||||
|
||||
@ -891,29 +895,10 @@ int32_t qb_ipcc_dispatch_put(qb_hdb_handle_t handle)
|
||||
if (res != 0) {
|
||||
return (res);
|
||||
}
|
||||
#if _POSIX_THREAD_PROCESS_SHARED > 0
|
||||
retry_semwait:
|
||||
res = sem_wait(&ipc_instance->control_buffer->sem2);
|
||||
if (res == -1 && errno == EINTR) {
|
||||
goto retry_semwait;
|
||||
}
|
||||
#else
|
||||
sop.sem_num = 2;
|
||||
sop.sem_op = -1;
|
||||
sop.sem_flg = 0;
|
||||
retry_semop:
|
||||
res = semop(ipc_instance->semid, &sop, 1);
|
||||
if (res == -1 && errno == EINTR) {
|
||||
res = EAGAIN;
|
||||
goto error_exit;
|
||||
} else if (res == -1 && errno == EACCES) {
|
||||
priv_change_send(ipc_instance);
|
||||
goto retry_semop;
|
||||
} else if (res == -1) {
|
||||
res = EBADE;
|
||||
|
||||
if ((res = ipc_sem_wait(ipc_instance, 2)) != 0) {
|
||||
goto error_exit;
|
||||
}
|
||||
#endif
|
||||
|
||||
addr = ipc_instance->dispatch_buffer;
|
||||
|
||||
@ -926,9 +911,7 @@ retry_semop:
|
||||
*/
|
||||
res = 0;
|
||||
|
||||
#if _POSIX_THREAD_PROCESS_SHARED < 1
|
||||
error_exit:
|
||||
#endif
|
||||
qb_hdb_handle_put(&ipc_hdb, handle);
|
||||
qb_hdb_handle_put(&ipc_hdb, handle);
|
||||
|
||||
|
||||
37
lib/ipcs.c
37
lib/ipcs.c
@ -199,12 +199,21 @@ static int memory_map(const char *path, size_t bytes, void **buf)
|
||||
|
||||
unlink(path);
|
||||
|
||||
if (fd == -1) {
|
||||
return (-1);
|
||||
}
|
||||
|
||||
res = ftruncate(fd, bytes);
|
||||
if (res == -1) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
addr_orig = mmap(NULL, bytes, PROT_NONE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
|
||||
if (addr_orig == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@ -212,6 +221,7 @@ static int memory_map(const char *path, size_t bytes, void **buf)
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
|
||||
if (addr != addr_orig) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
@ -237,12 +247,20 @@ static int circular_memory_map(const char *path, size_t bytes, void **buf)
|
||||
|
||||
unlink(path);
|
||||
|
||||
if (fd == -1) {
|
||||
return (-1);
|
||||
}
|
||||
res = ftruncate(fd, bytes);
|
||||
if (res == -1) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
addr_orig = mmap(NULL, bytes << 1, PROT_NONE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
|
||||
if (addr_orig == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@ -250,6 +268,7 @@ static int circular_memory_map(const char *path, size_t bytes, void **buf)
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
|
||||
if (addr != addr_orig) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
@ -259,6 +278,10 @@ static int circular_memory_map(const char *path, size_t bytes, void **buf)
|
||||
addr = mmap(((char *)addr_orig) + bytes,
|
||||
bytes, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_SHARED, fd, 0);
|
||||
if (addr == MAP_FAILED) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef QB_BSD
|
||||
madvise(((char *)addr_orig) + bytes, bytes, MADV_NOSYNC);
|
||||
#endif
|
||||
@ -613,8 +636,7 @@ retry_semop:
|
||||
send_ok = api->sending_allowed(conn_info->service,
|
||||
header->id,
|
||||
header,
|
||||
conn_info->
|
||||
sending_allowed_private_data);
|
||||
conn_info->sending_allowed_private_data);
|
||||
|
||||
/*
|
||||
* This happens when the message contains some kind of invalid
|
||||
@ -650,8 +672,9 @@ retry_semop:
|
||||
sizeof(qb_ipc_response_header_t));
|
||||
}
|
||||
|
||||
api->sending_allowed_release(conn_info->
|
||||
sending_allowed_private_data);
|
||||
api->
|
||||
sending_allowed_release
|
||||
(conn_info->sending_allowed_private_data);
|
||||
qb_ipcs_refcount_dec(conn);
|
||||
}
|
||||
pthread_exit(0);
|
||||
@ -662,6 +685,7 @@ static int req_setup_send(struct conn_info *conn_info, int error)
|
||||
mar_res_setup_t res_setup;
|
||||
unsigned int res;
|
||||
|
||||
memset(&res_setup, 0, sizeof(res_setup));
|
||||
res_setup.error = error;
|
||||
|
||||
retry_send:
|
||||
@ -867,7 +891,7 @@ static int conn_info_create(int fd)
|
||||
/*
|
||||
* Exported functions
|
||||
*/
|
||||
void qb_ipcs_ipc_init(struct qb_ipcs_init_state *init_state)
|
||||
extern void qb_ipcs_ipc_init(struct qb_ipcs_init_state *init_state)
|
||||
{
|
||||
int server_fd;
|
||||
struct sockaddr_un un_addr;
|
||||
@ -900,8 +924,7 @@ void qb_ipcs_ipc_init(struct qb_ipcs_init_state *init_state)
|
||||
qb_util_log(LOG_CRIT,
|
||||
"Could not set non-blocking operation on server socket: %s\n",
|
||||
error_str);
|
||||
api->
|
||||
fatal_error
|
||||
api->fatal_error
|
||||
("Could not set non-blocking operation on server socket");
|
||||
}
|
||||
|
||||
|
||||
1094
lib/logsys.c
1094
lib/logsys.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user