Bug 2437

Summary: Faults returned to C client
Product: C WS Core Reporter: Sam Lang <slang@mcs.anl.gov>
Component: C WSRF coreAssignee: Joe Bester <bester@mcs.anl.gov>
Status: RESOLVED FIXED    
Severity: minor CC: allcock@mcs.anl.gov
Priority: P3    
Version: development   
Target Milestone: ---   
Hardware: All   
OS: All   

Description From 2004-12-10 09:20:03
In some cases (when an error occurs in the container instead of the service)
don't have valid WS-Addressing header elements, so the client fails with an
error about missing WS-Addressing stuff instead of displaying the real fault error.
------- Comment #1 From 2005-04-21 16:59:21 -------
This should be fixed but needs to be tested.
------- Comment #2 From 2005-06-17 07:46:55 -------
Taking ownership of all of slang's WSC bugs.
------- Comment #3 From 2005-06-17 09:09:15 -------
There seem to be at least two different problems handling these sorts of
messages.

For example, when talking to a java service container and providing an invalid
service path, the container response with a soap message containing no headers
at all, just a fault in the body. Checking the spec, it looks like the header
block is optional, so the client bindings code should probably be a bit more
careful. It's probably worthwhile to invok the response trigger if there's no
header, but if it fails (missing addressing headers or whatever) ignore that
unless the body doesn't contain a fault.

When doing the same thing to the c container, the response is constructed with
some of the ws addressing headers, but the wsa:RelatesTo header contains no
content. This confuses the ws-addressing handler.
------- Comment #4 From 2005-06-17 13:59:38 -------
I committed some fixes to the service side in the c code. The check for message
id in the response handler was checking the wrong value for nullness, and thus
not generating an error. Fixing that triggered a recursive fault generation
problem in the messaging API which is also fixed, so clients talking to the
services can figure out the proper error now.

The java behavior of omitting the soap:header element will require more changes
to the bindings generator to get things handled more nicely.
------- Comment #5 From 2005-08-08 10:18:29 -------
Committed a fix to the java case (fault without any headers) this in the trunk.
The java code reported doesn't actually generate this type of error any more in
the gt4.0 branch.

While fixing this bug, I restructured the client stubs a bit in the trunk so
that  the client state machine is now in the soap messaging library instead of
in the bindings implementation of each operation. This change will make fixing
state machine bugs much simpler (direct code to change, one package to update),
and will also make features like intra-container invocation of services much
easier to implement.

joe