Skip to content

Commit b093167

Browse files
vsivaAndroid (Google) Code Review
authored andcommitted
Merge "gltrace: Use Unix Domain Socket rather than INET Socket"
2 parents c7685d6 + 4c4d501 commit b093167

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

opengl/libs/GLES_trace/src/gltrace_eglapi.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,10 @@ static void *commandReceiveTask(void *arg) {
7777
}
7878

7979
void GLTrace_start() {
80-
char value[PROPERTY_VALUE_MAX];
80+
char udsName[PROPERTY_VALUE_MAX];
8181

82-
property_get("debug.egl.debug_port", value, "5039");
83-
const unsigned short port = (unsigned short)atoi(value);
84-
85-
int clientSocket = gltrace::acceptClientConnection(port);
82+
property_get("debug.egl.debug_portname", udsName, "gltrace");
83+
int clientSocket = gltrace::acceptClientConnection(udsName);
8684
if (clientSocket < 0) {
8785
ALOGE("Error creating GLTrace server socket. Quitting application.");
8886
exit(-1);

opengl/libs/GLES_trace/src/gltrace_transport.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717
#include <stdlib.h>
1818
#include <unistd.h>
1919

20+
#include <unistd.h>
2021
#include <sys/socket.h>
22+
#include <sys/un.h>
2123
#include <netinet/in.h>
22-
#include <arpa/inet.h>
2324

2425
#include <cutils/log.h>
2526

@@ -28,22 +29,24 @@
2829
namespace android {
2930
namespace gltrace {
3031

31-
int acceptClientConnection(int serverPort) {
32-
int serverSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
32+
int acceptClientConnection(char *sockname) {
33+
int serverSocket = socket(AF_LOCAL, SOCK_STREAM, 0);
3334
if (serverSocket < 0) {
3435
ALOGE("Error (%d) while creating socket. Check if app has network permissions.",
3536
serverSocket);
3637
return -1;
3738
}
3839

39-
struct sockaddr_in server, client;
40+
struct sockaddr_un server, client;
4041

41-
server.sin_family = AF_INET;
42-
server.sin_addr.s_addr = htonl(INADDR_ANY);
43-
server.sin_port = htons(serverPort);
42+
memset(&server, 0, sizeof server);
43+
server.sun_family = AF_UNIX;
44+
// the first byte of sun_path should be '\0' for abstract namespace
45+
strcpy(server.sun_path + 1, sockname);
4446

45-
socklen_t sockaddr_len = sizeof(sockaddr_in);
46-
if (bind(serverSocket, (struct sockaddr *) &server, sizeof(server)) < 0) {
47+
// note that sockaddr_len should be set to the exact size of the buffer that is used.
48+
socklen_t sockaddr_len = sizeof(server.sun_family) + strlen(sockname) + 1;
49+
if (bind(serverSocket, (struct sockaddr *) &server, sockaddr_len) < 0) {
4750
close(serverSocket);
4851
ALOGE("Failed to bind the server socket");
4952
return -1;
@@ -55,7 +58,7 @@ int acceptClientConnection(int serverPort) {
5558
return -1;
5659
}
5760

58-
ALOGD("gltrace::waitForClientConnection: server listening @ port %d", serverPort);
61+
ALOGD("gltrace::waitForClientConnection: server listening @ path %s", sockname);
5962

6063
int clientSocket = accept(serverSocket, (struct sockaddr *)&client, &sockaddr_len);
6164
if (clientSocket < 0) {
@@ -64,7 +67,7 @@ int acceptClientConnection(int serverPort) {
6467
return -1;
6568
}
6669

67-
ALOGD("gltrace::waitForClientConnection: client connected: %s", inet_ntoa(client.sin_addr));
70+
ALOGD("gltrace::waitForClientConnection: client connected.");
6871

6972
// do not accept any more incoming connections
7073
close(serverSocket);

opengl/libs/GLES_trace/src/gltrace_transport.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ class BufferedOutputStream {
7676
};
7777

7878
/**
79-
* Utility method: start a server at @serverPort, and wait for a client
80-
* connection. Returns the connected client socket on success, or -1 on failure.
79+
* Utility method: start a server listening at @sockName (unix domain socket,
80+
* abstract namespace path), and wait for a client connection.
81+
* Returns the connected client socket on success, or -1 on failure.
8182
*/
82-
int acceptClientConnection(int serverPort);
83+
int acceptClientConnection(char *sockName);
8384

8485
};
8586
};

0 commit comments

Comments
 (0)