static void
socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
                jstring name, jint namespaceId)
{
    int ret;
    int fd;

    if (name == NULL) {
        jniThrowNullPointerException(env, NULL);
        return;
    }

    fd = jniGetFDFromFileDescriptor(env, fileDescriptor);

    if (env->ExceptionCheck()) {
        return;
    }

    ScopedUtfChars nameUtf8(env, name);

    ret = socket_local_server_bind(fd, nameUtf8.c_str(), namespaceId);

    if (ret < 0) {
        jniThrowIOException(env, errno);
        return;
    }
}
static void
socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
                jstring name, jint namespaceId)
{
    int ret;
    int fd;
    const char *nameUtf8;


    if (name == NULL) {
        jniThrowNullPointerException(env, NULL);
    }

    fd = jniGetFDFromFileDescriptor(env, fileDescriptor);

    if (env->ExceptionOccurred() != NULL) {
        return;
    }

    nameUtf8 = env->GetStringUTFChars(name, NULL);

    ret = socket_local_server_bind(fd, nameUtf8, namespaceId);

    env->ReleaseStringUTFChars(name, nameUtf8);

    if (ret < 0) {
        jniThrowIOException(env, errno);
        return;
    }
}
Example #3
0
static inline int create_server_socket(const char* name)
{
    int s = socket(AF_LOCAL, SOCK_STREAM, 0);
    APPL_TRACE_DEBUG1("covert name to android abstract name:%s", name);
    if(socket_local_server_bind(s, name, ANDROID_SOCKET_NAMESPACE_ABSTRACT) >= 0)
    {
        if(listen(s, 5) == 0)
        {
            APPL_TRACE_DEBUG2("listen to local socket:%s, fd:%d", name, s);
            return s;
        }
        else APPL_TRACE_ERROR3("listen to local socket:%s, fd:%d failed, errno:%d", name, s, errno);
    }
    else APPL_TRACE_ERROR3("create local socket:%s fd:%d, failed, errno:%d", name, s, errno);
    close(s);
    return -1;
}
/*******************************************************************************
**
** Function         skt_create
**
** Description      Create local socket, listen and return the Socket file
**                  descriptor
**
** Returns          socket file descriptor
**
*******************************************************************************/
int skt_create(const char* name)
{
    int s = socket(AF_LOCAL, SOCK_STREAM, 0);
    BTSKTDBG(" %s ", __FUNCTION__);

    if(socket_local_server_bind(s, name, ANDROID_SOCKET_NAMESPACE_ABSTRACT) < 0)
    {
        BTSKTERR("socket failed to create (%s)", strerror(errno));
        close(s);
        return -1;
    }

    if(listen(s, 5) < 0)
    {
        BTSKTERR("listen failed (%s)", strerror(errno));
        close(s);
        return -1;
    }
    return s;
}
Example #5
0
/* =========================================================================
FUNCTION     : btc_accept

DESCRIPTION  :

DEPENDENCIES : None

RETURN VALUE : None

============================================================================*/
static int btc_accept(char *name)
{
    int fd = -1;
    struct sockaddr_in  client_address;
    socklen_t clen;

    ALOGV("%s: ACCEPT ", __func__);
    sock_id = socket(AF_LOCAL, SOCK_STREAM, 0);
    if (sock_id < 0) {
        ALOGE("Socket creation failure");
        return fd;
    }

    ALOGV("covert name to android abstract name:%s %d", name, sock_id);
    if (socket_local_server_bind(sock_id,
        name, ANDROID_SOCKET_NAMESPACE_ABSTRACT) >= 0) {
        if (listen(sock_id, 5) == 0) {
            ALOGV("BTC listen to local socket:%s, fd:%d", name, sock_id);
        } else {
            ALOGE("BTC listen to local socket:failed");
            return fd;
        }
    } else {
        close(sock_id);
        sock_id=-1;
        ALOGE("BTC sock ser bind failed");
        return fd;
    }

    clen = sizeof(client_address);
    ALOGV("before accept_server_socket");
    fd = accept(sock_id, (struct sockaddr *)&client_address, &clen);
    if (fd > 0) {
        ALOGV("BTC accepted fd:%d for server fd:%d", fd, sock_id);
        return fd;
    } else {
        ALOGE("BTC accept failed fd:%d sock d:%d error %s", fd, sock_id, strerror(errno));
        return fd;
    }
    return fd;
}
int create_server_socket(const char* name)
{
    int sock = socket(AF_LOCAL, SOCK_STREAM, 0);
    if(sock < 0)
        return -1;

    LOGV("create_server_socket %s", name);

    if(socket_local_server_bind(sock, name, ANDROID_SOCKET_NAMESPACE_ABSTRACT) < 0)
    {
        LOGE("socket failed to create (%s)", strerror(errno));
        return -1;
    }

    if(listen(sock, 1) < 0)
    {
        LOGE("listen failed (%s)", strerror(errno));
        close(sock);
        return -1;
    }

    LOGV("created socket fd %d", sock);
    return sock;
}