mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-17 02:42:33 +00:00
daemon/socket_connection: guard unix socket code by HAVE_UNIX_SOCKETS
This commit is contained in:
parent
bce95a1644
commit
3a6c8b019e
@ -447,58 +447,6 @@ int socket_connection_create_launchd(void){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* create socket data_source for unix domain socket
|
|
||||||
*/
|
|
||||||
int socket_connection_create_unix(char *path){
|
|
||||||
|
|
||||||
// create btstack_data_source_t
|
|
||||||
btstack_data_source_t *ds = calloc(sizeof(btstack_data_source_t), 1);
|
|
||||||
if (ds == NULL) return -1;
|
|
||||||
|
|
||||||
// create unix socket
|
|
||||||
int fd = socket (AF_UNIX, SOCK_STREAM, 0);
|
|
||||||
if (fd < 0) {
|
|
||||||
log_error( "Error creating socket ...(%s)", strerror(errno));
|
|
||||||
free(ds);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
log_info ("Socket created at %s", path);
|
|
||||||
|
|
||||||
struct sockaddr_un addr;
|
|
||||||
memset(&addr, 0, sizeof(addr));
|
|
||||||
addr.sun_family = AF_UNIX;
|
|
||||||
strcpy(addr.sun_path, path);
|
|
||||||
unlink(path);
|
|
||||||
|
|
||||||
const int y = 1;
|
|
||||||
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*) &y, sizeof(int));
|
|
||||||
|
|
||||||
if (bind (fd, (struct sockaddr *) &addr, sizeof (addr) ) ) {
|
|
||||||
log_error( "Error on bind() ...(%s)", strerror(errno));
|
|
||||||
free(ds);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// http://blog.henning.makholm.net/2008/06/unix-domain-socket-woes.html
|
|
||||||
// make socket accept from all clients
|
|
||||||
chmod(path, S_IRWXU | S_IRWXG | S_IRWXO);
|
|
||||||
//
|
|
||||||
|
|
||||||
if (listen(fd, MAX_PENDING_CONNECTIONS)) {
|
|
||||||
log_error( "Error on listen() ...(%s)", strerror(errno));
|
|
||||||
free(ds);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
btstack_run_loop_set_data_source_fd(ds, fd);
|
|
||||||
btstack_run_loop_set_data_source_handler(ds, &socket_connection_accept);
|
|
||||||
btstack_run_loop_enable_data_source_callbacks(ds, DATA_SOURCE_CALLBACK_READ);
|
|
||||||
btstack_run_loop_add_data_source(ds);
|
|
||||||
|
|
||||||
log_info ("Server up and running ...");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set packet handler for all auto-accepted connections
|
* set packet handler for all auto-accepted connections
|
||||||
@ -576,6 +524,60 @@ int socket_connection_close_tcp(connection_t * connection){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_UNIX_SOCKETS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create socket data_source for unix domain socket
|
||||||
|
*/
|
||||||
|
int socket_connection_create_unix(char *path){
|
||||||
|
|
||||||
|
// create btstack_data_source_t
|
||||||
|
btstack_data_source_t *ds = calloc(sizeof(btstack_data_source_t), 1);
|
||||||
|
if (ds == NULL) return -1;
|
||||||
|
|
||||||
|
// create unix socket
|
||||||
|
int fd = socket (AF_UNIX, SOCK_STREAM, 0);
|
||||||
|
if (fd < 0) {
|
||||||
|
log_error( "Error creating socket ...(%s)", strerror(errno));
|
||||||
|
free(ds);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
log_info ("Socket created at %s", path);
|
||||||
|
|
||||||
|
struct sockaddr_un addr;
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sun_family = AF_UNIX;
|
||||||
|
strcpy(addr.sun_path, path);
|
||||||
|
unlink(path);
|
||||||
|
|
||||||
|
const int y = 1;
|
||||||
|
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*) &y, sizeof(int));
|
||||||
|
|
||||||
|
if (bind (fd, (struct sockaddr *) &addr, sizeof (addr) ) ) {
|
||||||
|
log_error( "Error on bind() ...(%s)", strerror(errno));
|
||||||
|
free(ds);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// http://blog.henning.makholm.net/2008/06/unix-domain-socket-woes.html
|
||||||
|
// make socket accept from all clients
|
||||||
|
chmod(path, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
|
//
|
||||||
|
|
||||||
|
if (listen(fd, MAX_PENDING_CONNECTIONS)) {
|
||||||
|
log_error( "Error on listen() ...(%s)", strerror(errno));
|
||||||
|
free(ds);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
btstack_run_loop_set_data_source_fd(ds, fd);
|
||||||
|
btstack_run_loop_set_data_source_handler(ds, &socket_connection_accept);
|
||||||
|
btstack_run_loop_enable_data_source_callbacks(ds, DATA_SOURCE_CALLBACK_READ);
|
||||||
|
btstack_run_loop_add_data_source(ds);
|
||||||
|
|
||||||
|
log_info ("Server up and running ...");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create socket connection to BTdaemon
|
* create socket connection to BTdaemon
|
||||||
@ -613,6 +615,8 @@ int socket_connection_close_unix(connection_t * connection){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_UNIX_SOCKETS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init socket connection module
|
* Init socket connection module
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user