Skip to content

Commit 5ca34bd

Browse files
authored
Ensure socketTimeout is < loginTimeout before connected (#2280)
1 parent 880b9b8 commit 5ca34bd

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,8 +726,13 @@ final InetSocketAddress open(String host, int port, int timeoutMillis, boolean u
726726
tcpSocket.setKeepAlive(true);
727727
setSocketOptions(tcpSocket, this);
728728

729-
// set SO_TIMEOUT
730729
int socketTimeout = con.getSocketTimeoutMilliseconds();
730+
731+
// socket timeout should be bounded by loginTimeout before connected
732+
if (!con.isConnected()) {
733+
socketTimeout = Math.min(con.timerRemaining(con.timerExpire), socketTimeout);
734+
}
735+
731736
tcpSocket.setSoTimeout(socketTimeout);
732737

733738
inputStream = tcpInputStream = new ProxyInputStream(tcpSocket.getInputStream());

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,7 @@ final int getRetryCount() {
17451745
return connectRetryCount;
17461746
}
17471747

1748-
final boolean attachConnId() {
1748+
final boolean isConnected() {
17491749
return state.equals(State.CONNECTED);
17501750
}
17511751

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ static String generateStateCode(SQLServerConnection con, int errNum, Integer dat
393393
* original error string.
394394
*/
395395
static String checkAndAppendClientConnId(String errMsg, SQLServerConnection conn) {
396-
if (null != conn && conn.attachConnId()) {
396+
if (null != conn && conn.isConnected()) {
397397
UUID clientConnId = conn.getClientConIdInternal();
398398
assert null != clientConnId;
399399
StringBuilder sb = new StringBuilder(errMsg);

0 commit comments

Comments
 (0)