Skip to content

Commit 273cb07

Browse files
committed
Bug#35860646 Timed functions like NdbSocket::read, read_socket should fail on invalid socket.
Make timed read functions read_socket, readln_socket, NdbSocket::read, NdbSocket::readln return -1 for invalid socket. Before it returned 0 indicating timeout. Change-Id: I58857a533012990fc663a15aea09573ad360865d
1 parent b022aa6 commit 273cb07

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

storage/ndb/include/util/NdbSocket.h

+3
Original file line numberDiff line numberDiff line change
@@ -304,20 +304,23 @@ uint NdbSocket::add_writable(ndb_socket_poller * poller) const {
304304

305305
inline
306306
int NdbSocket::poll_readable(int timeout) const {
307+
if (!is_valid()) return -1;
307308
ndb_socket_poller poller;
308309
poller.add_readable(s, ssl);
309310
return poller.poll(timeout);
310311
}
311312

312313
inline
313314
int NdbSocket::poll_writable(int timeout) const {
315+
if (!is_valid()) return -1;
314316
ndb_socket_poller poller;
315317
poller.add_writable(s);
316318
return poller.poll(timeout);
317319
}
318320

319321
inline
320322
bool NdbSocket::check_hup() const {
323+
if (!is_valid()) return true;
321324
ndb_socket_poller poller;
322325
poller.add_readable(s);
323326
if(poller.poll_unsafe(0) > 0 && poller.has_hup(0))

storage/ndb/src/common/util/socket_io.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ poll_socket(ndb_socket_t socket, bool read, bool write,
5757
int
5858
read_socket(ndb_socket_t socket, int timeout_millis,
5959
char * buf, int buflen){
60+
if (!ndb_socket_valid(socket))
61+
return -1;
62+
6063
if(buflen < 1)
6164
return 0;
6265

@@ -72,6 +75,9 @@ read_socket(ndb_socket_t socket, int timeout_millis,
7275
int
7376
readln_socket(ndb_socket_t socket, int timeout_millis, int *time,
7477
char * buf, int buflen, NdbMutex *mutex){
78+
if (!ndb_socket_valid(socket))
79+
return -1;
80+
7581
if(buflen <= 1)
7682
return 0;
7783

0 commit comments

Comments
 (0)