Hi all,

i'm trying to create a "custom" rild process but i having problem with the 
creation of rild socket.

I'm able to create a unix socket in */dev/socket/rild *but the application 
*com.android.phone* return the follow error:

*                Couldn't find 'rild' socket; retrying after timeout*

The socket has permission of *rw* for root and *rw* for radio group (with 
*ll* I obtain the same result on the custom rild socket and real socket)

I use the following code:

unsigned int s, s2;
struct sockaddr_un local, remote1;

s = socket(PF_UNIX, SOCK_STREAM, 0);

int n = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &n, sizeof(n));

local.sun_family = AF_LOCAL;
snprintf(local.sun_path, sizeof(local.sun_path), "/dev/socket/rild");
unlink(local.sun_path);
size_t len = strlen(local.sun_path) + sizeof(local.sun_family);
int ret = bind(s, (struct sockaddr *) &local, sizeof (local));
int savederrno = errno;
if (ret) {
    errno = savederrno;
    __android_log_print(ANDROID_LOG_VERBOSE, TAGCB, "Error in binding: %d", 
errno);
    return -1;
}

if (lchown(local.sun_path, 0, 1001)) {
    __android_log_print(ANDROID_LOG_VERBOSE, TAGCB, "Failed to lchown socket 
%s",local.sun_path);
    return -1;
}

if(chmod(local.sun_path,0660)){
    __android_log_print(ANDROID_LOG_VERBOSE, TAGCB, "Failed to chmod socket 
%s",local.sun_path);
    return -1;
}

__android_log_print(ANDROID_LOG_VERBOSE, TAGCB, "Created SOCKET 
%s",local.sun_path);


fcntl(s, F_SETFD, FD_CLOEXEC);
fcntl(s, F_SETFL, O_NONBLOCK);
switchUser();
listen(s, 8);


Thanks for the advices :D

-- 
-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

--- 
You received this message because you are subscribed to the Google Groups 
"android-porting" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-porting+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to