Skip to content

Commit 710bf40

Browse files
committed
Address code review comments
1 parent e7ddcc9 commit 710bf40

File tree

3 files changed

+24
-23
lines changed

3 files changed

+24
-23
lines changed

lldb/include/lldb/Host/posix/DomainSocket.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class DomainSocket : public Socket {
3131

3232
std::vector<std::string> GetListeningConnectionURI() const override;
3333

34-
static Socket *Create(NativeSocket sockfd, bool should_close, Status &error);
34+
static llvm::Expected<std::unique_ptr<DomainSocket>>
35+
FromBoundNativeSocket(NativeSocket sockfd, bool should_close);
3536

3637
protected:
3738
DomainSocket(SocketProtocol protocol);

lldb/source/Host/posix/DomainSocket.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -192,21 +192,19 @@ std::vector<std::string> DomainSocket::GetListeningConnectionURI() const {
192192
return {llvm::formatv("unix-connect://{0}", addr.sun_path)};
193193
}
194194

195-
Socket *DomainSocket::Create(NativeSocket sockfd, bool should_close,
196-
Status &error) {
195+
llvm::Expected<std::unique_ptr<DomainSocket>>
196+
DomainSocket::FromBoundNativeSocket(NativeSocket sockfd, bool should_close) {
197197
#ifdef __linux__
198198
// Check if fd represents domain socket or abstract socket.
199199
struct sockaddr_un addr;
200200
socklen_t addr_len = sizeof(addr);
201-
if (getsockname(sockfd, (struct sockaddr *)&addr, &addr_len) == -1) {
202-
error = Status::FromErrorString(
203-
"lldb-platform child: not a socket or error occurred");
204-
return nullptr;
205-
}
206-
207-
if (addr.sun_family == AF_UNIX && addr.sun_path[0] == '\0') {
208-
return new AbstractSocket(sockfd, should_close);
209-
}
201+
if (getsockname(sockfd, (struct sockaddr *)&addr, &addr_len) == -1)
202+
return llvm::createStringError("not a socket or error occurred");
203+
if (addr.sun_family != AF_UNIX)
204+
return llvm::createStringError("Bad socket type");
205+
if (addr_len > offsetof(struct sockaddr_un, sun_path) &&
206+
addr.sun_path[0] == '\0')
207+
return std::make_unique<AbstractSocket>(sockfd, should_close);
210208
#endif
211-
return new DomainSocket(sockfd, should_close);
212-
}
209+
return std::make_unique<DomainSocket>(sockfd, should_close);
210+
}

lldb/tools/lldb-server/lldb-platform.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -465,21 +465,23 @@ int main_platform(int argc, char *argv[]) {
465465
return socket_error;
466466
}
467467

468-
Socket *socket;
468+
std::unique_ptr<Socket> socket;
469469
if (gdbserver_port) {
470-
socket = new TCPSocket(sockfd, /*should_close=*/true);
470+
socket = std::make_unique<TCPSocket>(sockfd, /*should_close=*/true);
471471
} else {
472-
socket = DomainSocket::Create(sockfd, /*should_close=*/true, error);
473-
if (error.Fail()) {
472+
llvm::Expected<std::unique_ptr<DomainSocket>> domain_socket =
473+
DomainSocket::FromBoundNativeSocket(sockfd, /*should_close=*/true);
474+
if (!domain_socket) {
474475
LLDB_LOGF(log, "Failed to create socket: %s\n", error.AsCString());
475476
return socket_error;
476477
}
478+
socket = std::move(domain_socket.get());
477479
}
478480

479-
Socket::SocketProtocol protocol = socket->GetSocketProtocol();
480-
GDBRemoteCommunicationServerPlatform platform(protocol, gdbserver_port);
481-
platform.SetConnection(
482-
std::unique_ptr<Connection>(new ConnectionFileDescriptor(socket)));
481+
GDBRemoteCommunicationServerPlatform platform(socket->GetSocketProtocol(),
482+
gdbserver_port);
483+
platform.SetConnection(std::unique_ptr<Connection>(
484+
new ConnectionFileDescriptor(socket.release())));
483485
client_handle(platform, inferior_arguments);
484486
return 0;
485487
}
@@ -492,7 +494,7 @@ int main_platform(int argc, char *argv[]) {
492494
return 1;
493495
}
494496

495-
Socket::SocketProtocol protocol;
497+
Socket::SocketProtocol protocol = Socket::ProtocolUnixDomain;
496498
std::string address;
497499
std::string gdb_address;
498500
uint16_t platform_port = 0;

0 commit comments

Comments
 (0)