On 7/10/06, Vlad Seryakov <[EMAIL PROTECTED]> wrote:
NS_FATAL in context of these functions means unrecoverable error, but if
name is not very good it can be changed
Here's some code checking for NS_FATAL and recovering...
if (status == NS_FATAL || sockPtr->reqPtr == NULL || !SetServer(sockPtr)) {
SockRelease(sockPtr, SOCK_SERVERREJECT, 0);
return NS_ERROR;
}
It's not just the name though, the distinction seems meaningless, and
indeed different parts of the code are confused about what it means.
We need to switch back to a socket driver interface with multiple
functions, as in the 3.x days. Pushing everything through:
typedef int (Ns_DriverProc)(Ns_DriverCmd cmd, Ns_Sock *sock,
struct iovec *bufs, int nbufs);
just isn't working. Check out the comments for the new NsDriver*
wrappers, even the long existing DriverKeep and DriverClose don't make
a lot of sense.
Stephen Deasey wrote:
> NS_FATAL doesn't make any sense. Fatal means unrecoverable error, as
> in Ns_Fatal(...): and the server exits.
>
> Anyway, the following two disagree. Whether they intend "request
> cannot be parsed" or "driver function not supported", NS_FATAL isn't
> the way to say it.
>
>
> /*
> *----------------------------------------------------------------------
> *
> * Ns_DriverSetRequest --
> *
> * Parses request line and sets as current Request struct, should be
> * in the form: METHOD URL ?PROTO?
> *
> * Results:
> * NS_ERROR in case of empty line
> * NS_FATAL if request cannot be parsed.
> * NS_OK if parsed sucessfully
> *
> * Side effects:
> * This is supposed to be called from drivers before the
> * socket is queued, usually from DriverQueue command.
> * Primary purpose is to allow non-HTTP drivers to setup
> * request line so registered callback proc will be called
> * during connection processing
> *
> *----------------------------------------------------------------------
> */
>
> /*
> *----------------------------------------------------------------------
> *
> * SockQueue --
> *
> * Puts socket into connection queue
> *
> * Call driver's queue handler for the last checks before actual
> * connection enqueue. NS_ERROR is valid here because that means
> * driver does not implement this call, we care about NS_FATAL status
> * only which means we cannot queue this socket. It is driver's
> responsibility
> * to allocate Request structure via Ns_DriverSetRequest call, otherwise
> * for all non-HTTP or not-parsed sockets this call will fail
> *
> * Results:
> * NS_OK if queued,
> * NS_ERROR if socket closed because of error
> * NS_TIMEOUT if queue is full
> *
> * Side effects:
> * None
> *
> *----------------------------------------------------------------------
> */
>
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> naviserver-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
>
--
Vlad Seryakov
571 262-8608 office
[EMAIL PROTECTED]
http://www.crystalballinc.com/vlad/
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
naviserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/naviserver-devel