olegk 2004/09/15 13:32:21 Modified: httpclient/src/java/org/apache/commons/httpclient HttpConnection.java httpclient/src/java/org/apache/commons/httpclient/params HttpConnectionParams.java Log: PR #30652 (Allow configuration of SO_LINGER) Contributed by Oleg Kalnichevski Reviewed by Michael Becke Revision Changes Path 1.100 +10 -4 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpConnection.java Index: HttpConnection.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpConnection.java,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- HttpConnection.java 13 Sep 2004 16:25:19 -0000 1.99 +++ HttpConnection.java 15 Sep 2004 20:32:21 -0000 1.100 @@ -679,6 +679,12 @@ socket.setTcpNoDelay(this.params.getTcpNoDelay()); socket.setSoTimeout(this.params.getSoTimeout()); + + int linger = this.params.getLinger(); + if (linger >= 0) { + socket.setSoLinger(linger > 0, linger); + } + int sndBufSize = this.params.getSendBufferSize(); if (sndBufSize >= 0) { socket.setSendBufferSize(sndBufSize); 1.6 +40 -4 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpConnectionParams.java Index: HttpConnectionParams.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HttpConnectionParams.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- HttpConnectionParams.java 13 May 2004 04:01:22 -0000 1.5 +++ HttpConnectionParams.java 15 Sep 2004 20:32:21 -0000 1.6 @@ -94,6 +94,18 @@ public static final String SO_RCVBUF = "http.socket.receivebuffer"; /** + * Sets SO_LINGER with the specified linger time in seconds. The maximum timeout + * value is platform specific. Value <tt>0</tt> implies that the option is disabled. + * Value <tt>-1</tt> implies that the JRE default is used. The setting only affects + * socket close. + * <p> + * This parameter expects a value of type [EMAIL PROTECTED] Integer}. + * </p> + * @see java.net.SocketOptions#SO_LINGER + */ + public static final String SO_LINGER = "http.socket.linger"; + + /** * Determines the timeout until a connection is etablished. A value of zero * means the timeout is not used. The default value is zero. * <p> @@ -219,6 +231,30 @@ */ public void setReceiveBufferSize(int size) { setIntParameter(SO_RCVBUF, size); + } + + /** + * Returns linger-on-close timeout. Value <tt>0</tt> implies that the option is + * disabled. Value <tt>-1</tt> implies that the JRE default is used. + * + * @return the linger-on-close timeout + */ + public int getLinger() { + return getIntParameter(SO_LINGER, -1); + } + + /** + * Returns linger-on-close timeout. This option disables/enables immediate return + * from a close() of a TCP Socket. Enabling this option with a non-zero Integer + * timeout means that a close() will block pending the transmission and + * acknowledgement of all data written to the peer, at which point the socket is + * closed gracefully. Value <tt>0</tt> implies that the option is + * disabled. Value <tt>-1</tt> implies that the JRE default is used. + * + * @param value the linger-on-close timeout + */ + public void setLinger(int value) { + setIntParameter(SO_LINGER, value); } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]