int _mc_ipc_send_message_to_server(mc_msg_type_e msg_type, mc_priv_type_e priv_type, const char *request_msg)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
int sockfd = -1;
- struct sockaddr_un serv_addr;
mc_comm_msg_s send_msg;
int recv_msg = -1;
unsigned int retry_count = 0;
"invalid request_msg size(%zu)", send_msg.msg_size);
/* Create Socket */
- ret = mc_ipc_create_client_socket(MC_TIMEOUT_SEC_5, &sockfd);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "socket is not created properly");
-
- /* Set server address. If the daemon is not running, the path did not exist */
- memset(&serv_addr, 0, sizeof(serv_addr));
- serv_addr.sun_family = AF_UNIX;
- MC_SAFE_STRLCPY(serv_addr.sun_path, MC_IPC_PATH, sizeof(serv_addr.sun_path));
-
- /* Connecting to the media controller service */
- if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
- mc_stderror("connect error");
- close(sockfd);
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
- }
+ sockfd = mc_ipc_create_client_socket();
+ mc_retvm_if(sockfd < 0, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION,
+ "socket is not created properly");
if (send(sockfd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) {
mc_stderror("send failed");
#include "media_controller_db_util.h"
#include "media_controller_socket.h"
-int mc_ipc_create_client_socket(int timeout_sec, int *sock_fd)
+int mc_ipc_create_client_socket(void)
{
int sock = -1;
+ struct sockaddr_un serv_addr;
+ struct timeval tv_timeout = { MC_TIMEOUT_SEC_5, 0 };
- struct timeval tv_timeout = { timeout_sec, 0 };
-
- /*Create TCP Socket*/
if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
mc_stderror("socket failed");
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ return -1;
}
- if (timeout_sec > 0) {
- if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) {
- mc_stderror("setsockopt failed");
- close(sock);
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
- }
+ if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) {
+ mc_stderror("setsockopt failed");
+ close(sock);
+ return -1;
}
- *sock_fd = sock;
+ memset(&serv_addr, 0, sizeof(serv_addr));
+ serv_addr.sun_family = AF_UNIX;
+ MC_SAFE_STRLCPY(serv_addr.sun_path, MC_IPC_PATH, sizeof(serv_addr.sun_path));
+
+ if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
+ mc_stderror("connect failed");
+ close(sock);
+ return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ }
- return MEDIA_CONTROLLER_ERROR_NONE;
+ return sock;
}
-int mc_ipc_create_server_socket(int *sock_fd)
+int mc_ipc_create_server_socket(void)
{
int i = 0;
bool bind_success = false;
int sock = -1;
struct sockaddr_un serv_addr;
- /* Create a TCP socket */
if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
mc_stderror("socket failed");
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ return -1;
}
- memset(&serv_addr, 0, sizeof(serv_addr));
+ unlink(MC_IPC_PATH);
+ memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
- unlink(MC_IPC_PATH);
MC_SAFE_STRLCPY(serv_addr.sun_path, MC_IPC_PATH, sizeof(serv_addr.sun_path));
- /* Bind to the local address */
for (i = 0; i < 20; i++) {
if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) {
bind_success = true;
if (bind_success == false) {
mc_stderror("bind failed");
close(sock);
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ return -1;
}
/*change permission of sock file*/
mc_debug("bind success");
- /* Listening */
if (listen(sock, SOMAXCONN) < 0) {
mc_stderror("listen failed");
close(sock);
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ return -1;
}
mc_debug("Listening...");
- *sock_fd = sock;
-
- return MEDIA_CONTROLLER_ERROR_NONE;
-
+ return sock;
}
-int mc_ipc_accept_client_tcp(int serv_sock, int *client_sock)
+int mc_ipc_accept_client_socket(int serv_sock)
{
int sockfd = -1;
- struct sockaddr_un client_addr;
- socklen_t client_addr_len;
- if (client_sock == NULL)
- return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
+ mc_retvm_if(serv_sock < 0, -1, "invalid serv_sock");
- client_addr_len = (socklen_t)sizeof(client_addr);
- if ((sockfd = accept(serv_sock, (struct sockaddr *)&client_addr, &client_addr_len)) < 0) {
+ if ((sockfd = accept(serv_sock, NULL, NULL)) < 0) {
mc_stderror("accept failed");
- *client_sock = -1;
- return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ return -1;
}
- *client_sock = sockfd;
-
- return MEDIA_CONTROLLER_ERROR_NONE;
+ return sockfd;
}