diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java index e5e175b9e..56f0e7f3f 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java @@ -1440,8 +1440,13 @@ public int getPort() { } @Override - public synchronized int getReceiveBufferSize() throws SocketException { - return tdsChannel.tcpSocket.getReceiveBufferSize(); + public int getReceiveBufferSize() throws SocketException { + tdsChannelLock.lock(); + try { + return tdsChannel.tcpSocket.getReceiveBufferSize(); + } finally { + tdsChannelLock.unlock(); + } } @Override @@ -1455,8 +1460,13 @@ public boolean getReuseAddress() throws SocketException { } @Override - public synchronized int getSendBufferSize() throws SocketException { - return tdsChannel.tcpSocket.getSendBufferSize(); + public int getSendBufferSize() throws SocketException { + tdsChannelLock.lock(); + try { + return tdsChannel.tcpSocket.getSendBufferSize(); + } finally { + tdsChannelLock.unlock(); + } } @Override @@ -1465,8 +1475,13 @@ public int getSoLinger() throws SocketException { } @Override - public synchronized int getSoTimeout() throws SocketException { - return tdsChannel.tcpSocket.getSoTimeout(); + public int getSoTimeout() throws SocketException { + tdsChannelLock.lock(); + try { + return tdsChannel.tcpSocket.getSoTimeout(); + } finally { + tdsChannelLock.unlock(); + } } @Override @@ -1536,21 +1551,36 @@ public void connect(SocketAddress endpoint, int timeout) throws IOException { // Ignore calls to methods that would otherwise allow the SSL socket // to directly manipulate the underlying TCP socket @Override - public synchronized void close() throws IOException { - if (logger.isLoggable(Level.FINER)) - logger.finer(logContext + " Ignoring close"); + public void close() throws IOException { + tdsChannelLock.lock(); + try { + if (logger.isLoggable(Level.FINER)) + logger.finer(logContext + " Ignoring close"); + } finally { + tdsChannelLock.unlock(); + } } @Override - public synchronized void setReceiveBufferSize(int size) throws SocketException { - if (logger.isLoggable(Level.FINER)) - logger.finer(toString() + " Ignoring setReceiveBufferSize size:" + size); + public void setReceiveBufferSize(int size) throws SocketException { + tdsChannelLock.lock(); + try { + if (logger.isLoggable(Level.FINER)) + logger.finer(toString() + " Ignoring setReceiveBufferSize size:" + size); + } finally { + tdsChannelLock.unlock(); + } } @Override - public synchronized void setSendBufferSize(int size) throws SocketException { - if (logger.isLoggable(Level.FINER)) - logger.finer(toString() + " Ignoring setSendBufferSize size:" + size); + public void setSendBufferSize(int size) throws SocketException { + tdsChannelLock.lock(); + try { + if (logger.isLoggable(Level.FINER)) + logger.finer(toString() + " Ignoring setSendBufferSize size:" + size); + } finally { + tdsChannelLock.unlock(); + } } @Override @@ -1566,8 +1596,13 @@ public void setSoLinger(boolean on, int linger) throws SocketException { } @Override - public synchronized void setSoTimeout(int timeout) throws SocketException { - tdsChannel.tcpSocket.setSoTimeout(timeout); + public void setSoTimeout(int timeout) throws SocketException { + tdsChannelLock.lock(); + try { + tdsChannel.tcpSocket.setSoTimeout(timeout); + } finally { + tdsChannelLock.unlock(); + } } @Override