Skip to content

Commit fa2b0d2

Browse files
authored
Fix dangling pointer error in cpp worker (#2975)
1 parent 3a406d6 commit fa2b0d2

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

cpp/src/backends/process/model_worker.cc

+16-15
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ void SocketServer::Initialize(
3434
if (port_num.empty()) {
3535
TS_LOG(FATAL, "Wrong arguments passed. No socket port given.");
3636
}
37-
port_ = htons(stoi(port_num));
37+
port_ = stoi(port_num);
3838
}
3939
} else {
4040
TS_LOG(FATAL, "Incomplete data provided");
4141
}
4242

43-
TS_LOGF(INFO, "Listening on port: {}", socket_name);
43+
TS_LOGF(INFO, "Listening on {}", socket_name_);
4444
server_socket_ = socket(socket_family, SOCK_STREAM, 0);
4545
if (server_socket_ == -1) {
4646
TS_LOGF(FATAL, "Failed to create socket descriptor. errno: {}", errno);
@@ -60,24 +60,25 @@ void SocketServer::Run() {
6060
}
6161

6262
sockaddr *srv_sock_address = nullptr, client_sock_address{};
63+
sockaddr_un sock_addr_un{};
64+
sockaddr_in sock_addr_in{};
6365
socklen_t name_len = 0;
6466
if (socket_type_ == "unix") {
6567
TS_LOG(INFO, "Binding to unix socket");
66-
sockaddr_un sock_addr{};
67-
std::memset(&sock_addr, 0, sizeof(sock_addr));
68-
sock_addr.sun_family = AF_UNIX;
69-
std::strncpy(sock_addr.sun_path, socket_name_.c_str(),
70-
sizeof(sock_addr.sun_path));
71-
srv_sock_address = reinterpret_cast<sockaddr*>(&sock_addr);
72-
name_len = SUN_LEN(&sock_addr);
68+
std::memset(&sock_addr_un, 0, sizeof(sock_addr_un));
69+
sock_addr_un.sun_family = AF_UNIX;
70+
std::strncpy(sock_addr_un.sun_path, socket_name_.c_str(),
71+
sizeof(sock_addr_un.sun_path));
72+
srv_sock_address = reinterpret_cast<sockaddr*>(&sock_addr_un);
73+
name_len = SUN_LEN(&sock_addr_un);
7374
} else {
7475
TS_LOG(INFO, "Binding to tcp socket");
75-
sockaddr_in sock_addr{};
76-
std::memset(&sock_addr, 0, sizeof(sock_addr));
77-
sock_addr.sin_family = AF_INET;
78-
sock_addr.sin_port = port_;
79-
sock_addr.sin_addr.s_addr = inet_addr(socket_name_.c_str());
80-
srv_sock_address = reinterpret_cast<sockaddr*>(&sock_addr);
76+
std::memset(&sock_addr_in, 0, sizeof(sock_addr_in));
77+
sock_addr_in.sin_family = AF_INET;
78+
TS_LOGF(INFO, "Listening on port {}", port_);
79+
sock_addr_in.sin_port = htons(port_);
80+
sock_addr_in.sin_addr.s_addr = inet_addr(socket_name_.c_str());
81+
srv_sock_address = reinterpret_cast<sockaddr*>(&sock_addr_in);
8182
name_len = sizeof(*srv_sock_address);
8283
}
8384

cpp/src/backends/process/model_worker.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class SocketServer {
5757
int server_socket_ = -1;
5858
std::string socket_type_;
5959
std::string socket_name_;
60-
ushort port_ = 9000;
60+
int port_ = 9000;
6161
std::shared_ptr<torchserve::Backend> backend_;
6262
};
6363

0 commit comments

Comments
 (0)