Obtain login information from a client thread to prepare a passthrough connection with a remote server.
CS_RETCODE srv_getloginfo(spp, loginfo)
SRV_PROC *spp; CS_LOGINFO **loginfo;
A pointer to an internal thread control structure.
A pointer to a CS_LOGINFO pointer that will be set to the address of a newly allocated CS_LOGINFO structure.
Returns |
To indicate |
---|---|
CS_SUCCEED |
The routine completed successfully. |
CS_FAIL |
The routine failed. |
#include <ospublic.h>
/*
** Local Prototype
*/
extern CS_RETCODE ex_srv_getloginfo PROTOTYPE((
CS_VOID *spp,
CS_VOID **loginfopp
));
/*
** EX_SRV_GETLOGINFO
**
** Example routine to retrieve the client’s login structure.
**
** Arguments:
** spp Thread control structure.
** loginfopp A pointer to client’s login record returned here.
**
** Returns:
**
** CS_SUCCEED Login structure was retrieved successfully.
** CS_FAIL An error was detected.
*/
CS_RETCODE ex_srv_getloginfo(spp, loginfopp)
SRV_PROC *spp;
CS_LOGINFO **loginfopp;
{
/* Initialization. */
*loginfopp = (CS_LOGINFO *)NULL;
if(srv_getloginfo(spp, loginfopp) == CS_FAIL)
{
return(CS_FAIL);
}
return(CS_SUCCEED);
}
Use srv_getloginfo in gateway applications that use passthrough mode. In passthrough mode, a gateway application passes packets between clients and remote Sybase servers without interpreting the protocol.
When a client connects directly to a server, the two programs negotiate the protocol format they will use to send and receive data. When you use protocol passthrough in a gateway application, the Open Server forwards protocol packets between a client and a remote server. Therefore, the client and the remote server must agree on the protocol version.
srv_getloginfo is the first of four calls, two of them CS-Library calls, that allow a client and remote server to negotiate a protocol format. The calls, which can only be made in a SRV_CONNECT event handler, are:
srv_getloginfo – allocate a CS_LOGINFO structure and fill it with protocol information from the client thread.
ct_setloginfo – prepare a CS_LOGINFO structure with the protocol information retrieved in step 1, then log in to the remote server with ct_connect.
ct_getloginfo – transfer protocol login response information from a CS_CONNECTION structure to the newly allocated CS_LOGINFO structure.
srv_setloginfo – send the remote server’s response, retrieved in step 3, to the client, then release the CS_LOGINFO structure.