#include <gskssl.h> #include <qsoasync.h> int gsk_secure_soc_startSend (gsk_handle my_session_handle, int IOCompletionPort, Qso_OverlappedIO_t * communicationsArea)Service Program Name: QSYS/QSOSSLSR
The gsk_secure_soc_startSend() function is used to initiate an asynchronous send operation on a secure session. The supplied send buffer cannot be reused by the calling application until the send is complete or the I/O completion port specified on the gsk_secure_soc_startSend() has been destroyed. This API supports sockets with an address family of AF_INET or AF_INET6 and type SOCK_STREAM only.
descriptorHandle | (Input) - The descriptor handle is application-specific
and is never used by the system. This field is intended to make it easier for
the application to keep track of information regarding a given socket connection.
|
buffer | (Input) - A pointer to a buffer of data that
should be sent over the socket. |
bufferLength | (Input) - The length of the data to be sent. |
postFlag | (Input) - The postFlag indicates if this operation
should be posted to the I/O completion port even if it completes immediately.
|
postFlagResult | (Output) - This field is valid if
gsk_secure_soc_startSend() returns with 1 and
postFlag was set to 1. In this scenario, postFlagResult set to 1
denotes
the operation completed and been posted to the I/O completion
port specified. A value of 0 denotes the operation could not be
completed immediately, but will be handled asynchronously. |
fillBuffer | (Input) - Only used on gsk_secure_soc_startRecv() or QsoStartRecv().
Ignored on gsk_secure_soc_startSend().
|
returnValue | (Output) - If
gsk_secure_soc_startSend() completes
synchronously (return value equals GSK_OK), then this field is
set to GSK_OK
and field secureDataTransferSize indicates number of bytes
sent. |
errnoValue | (Output) - When the operation has completed
asynchronously and returnValue is GSK_ERROR_IO, this field will contain an errno
further defining the failure. |
operationCompleted | (Output) - If the operation is posted to the I/O
completion port, this field is updated to indicate that the operation was a
GSKSECURESOCSTARTSEND. |
secureDataTransferSize | (Output) - Number of bytes sent when gsk_secure_soc_startSend()
completes synchronously (function return value equals GSK_OK). |
bytesAvailable | Not used. |
operationWaitTime | (Input) - A timeval structure which specifies the
maximum time allowed for this operation to complete asynchronously.
struct timeval { long tv_sec; /* second */ long tv_usec; /* microseconds */ };If this timer expires, the operation will be posted to the I/O completion port with errnoValue set to EAGAIN. If this field is set to zero, the operation's asynchronous completion will not be timed. If socketDescriptor is closed before the operation completes or times out, the operation will be posted to the I/O completion port with errnoValue set to ECLOSED. The minimum operationWaitTime is 1 second. The microseconds field (tv_usec) in the timeval is not used and must be set to zero. |
postedDescriptor | Not used - Must be set to zero. |
operationId | (Input) - An identifier to uniquely identify this
operation or a group of operations. It can be set with the return value from QsoGenerateOperationId() or with an application-defined value. This value is preserved but ignored by all APIs except QsoCancelOperation() and QsoIsOperationPending(). |
reserved1 | (Input) - Must be set to hex zeroes. |
reserved2 | (Input) - Must be set to hex zeroes. |
No authorization is required.
gsk_secure_soc_startSend() returns an integer. Possible values are:
The handle specified was not valid.
The handle is not in the correct state for this operation.
The bufferLength field located in the Qso_OverLappedIO_t communications area is less than 1.
A close() was done on the socket descriptor for this secure session.
The buffer pointer located in Qso_OverlappedIO_t communications area is not valid.
An unexpected error occurred during SSL processing.
The Qso_OverLappedIO_t specified was not valid.
The I/O completion port specified was not valid.
The socket descriptor specified within the gsk_handle was not valid.
A gsk_secure_soc_misc(GSK_CLOSE_NOTIFY) was previously performed on this secure session.
A secure connection using TLSv1.1 or higher protocol has sent or received more than 264-1 SSL records. To prevent this error perform a gsk_secure_soc_misc(GSK_RESET_CIPHER) operation before the record limit is reached. A general guideline would be once a day for long lived secure connections.
An error occured in SSL processing; check the errno value.
When gsk_secure_soc_startSend() API fails with return code [GSK_ERROR_IO], errno can be set to:
The field operationWaitTime.tv_sec was negative or operationWaitTime.tv_usec was not zero or postedDescriptor was not zero.
Input/output error.
Requested operation requires a connection.
The specified descriptor does not reference a socket.
Broken pipe.
The protocol required to support the specified address family is not available at this time.
If an errno is returned that is not in this list, see Errno Values for UNIX®-Type Functions for a description of the errno.
Message ID | Error Message Text |
---|---|
CPE3418 E | Possible APAR condition or hardware failure. |
CPF9872 E | Program or service program &1 in library &2 ended. Reason code &3. |
CPFA081 E | Unable to set return value or error code. |
Top | UNIX-Type APIs | APIs by category |