summaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/CORBA/gnuRequest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/CORBA/gnuRequest.java')
-rw-r--r--libjava/classpath/gnu/CORBA/gnuRequest.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/libjava/classpath/gnu/CORBA/gnuRequest.java b/libjava/classpath/gnu/CORBA/gnuRequest.java
index 5adf7412926..0b3338d3437 100644
--- a/libjava/classpath/gnu/CORBA/gnuRequest.java
+++ b/libjava/classpath/gnu/CORBA/gnuRequest.java
@@ -83,6 +83,7 @@ import org.omg.PortableInterceptor.ClientRequestInterceptorOperations;
import org.omg.PortableInterceptor.ForwardRequest;
import org.omg.PortableInterceptor.InvalidSlot;
+import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -593,7 +594,7 @@ public class gnuRequest extends Request implements Cloneable
{
final gnuRequest cloned = Clone();
cloned.oneWay = true;
-
+
new Thread()
{
public void run()
@@ -717,12 +718,11 @@ public class gnuRequest extends Request implements Cloneable
* property ({@link #setIOR(IOR)} before calling this method.
*
* @throws BAD_INV_ORDER, minor code 0, if the IOR has not been previously set
- * or if the direct argument addition is mixed with the direct argument
- * writing into the output stream.
- *
+ * or if the direct argument addition is mixed with the direct
+ * argument writing into the output stream.
* @return the server response in binary form.
*/
- public synchronized RawReply submit()
+public synchronized RawReply submit()
throws ForwardRequest
{
gnu.CORBA.GIOP.MessageHeader header = new gnu.CORBA.GIOP.MessageHeader();
@@ -788,20 +788,21 @@ public class gnuRequest extends Request implements Cloneable
if (socket == null)
{
- // The BindException may be thrown under very heavy parallel
+ // The IOException may be thrown under very heavy parallel
// load. For some time, just wait, exceptiong the socket to free.
Open: for (int i = 0; i < PAUSE_STEPS; i++)
{
try
{
if (orb instanceof OrbFunctional)
- socket = ((OrbFunctional) orb).socketFactory.createClientSocket(
- ior.Internet.host, ior.Internet.port);
+ socket = ((OrbFunctional) orb).socketFactory.
+ createClientSocket(
+ ior.Internet.host, ior.Internet.port);
else
socket = new Socket(ior.Internet.host, ior.Internet.port);
break Open;
}
- catch (BindException ex)
+ catch (IOException ex)
{
try
{
@@ -833,7 +834,7 @@ public class gnuRequest extends Request implements Cloneable
request_part.buffer.writeTo(socketOutput);
socketOutput.flush();
- if (!socket.isClosed())
+ if (!socket.isClosed() && !oneWay)
{
MessageHeader response_header = new MessageHeader();
InputStream socketInput = socket.getInputStream();
@@ -937,6 +938,10 @@ public class gnuRequest extends Request implements Cloneable
throws SystemException, ForwardRequest
{
RawReply response = submit();
+
+ // If this is a one way message, do not care about the response.
+ if (oneWay && response == EMPTY)
+ return;
if (m_rph == null)
m_rph = response.header.create_reply_header();