|
|
|
|
@@ -82,15 +82,15 @@ void close_aux_transport( auxtrans_param_t auxtrans)
|
|
|
|
|
typedef struct aux_response_param{
|
|
|
|
|
char *cid; /*!< channel ID */
|
|
|
|
|
unsigned char *data; /*!< sending data */
|
|
|
|
|
int datalen; /*!< length of data */
|
|
|
|
|
int maxlenPerFrame; /*!< maximum data length to send per frame */
|
|
|
|
|
OPJ_SIZE_T datalen; /*!< length of data */
|
|
|
|
|
OPJ_SIZE_T maxlenPerFrame; /*!< maximum data length to send per frame */
|
|
|
|
|
SOCKET listensock; /*!< listeing socket */
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
HANDLE hTh; /*!< thread handle */
|
|
|
|
|
#endif
|
|
|
|
|
} aux_response_param_t;
|
|
|
|
|
|
|
|
|
|
aux_response_param_t * gene_auxresponse( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, int datalen, int maxlenPerFrame);
|
|
|
|
|
aux_response_param_t * gene_auxresponse( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame);
|
|
|
|
|
|
|
|
|
|
void delete_auxresponse( aux_response_param_t **auxresponse);
|
|
|
|
|
|
|
|
|
|
@@ -101,7 +101,7 @@ unsigned __stdcall aux_streaming( void *arg);
|
|
|
|
|
void * aux_streaming( void *arg);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
void send_responsedata_on_aux( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, int datalen, int maxlenPerFrame)
|
|
|
|
|
void send_responsedata_on_aux( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
|
|
|
|
|
{
|
|
|
|
|
aux_response_param_t *auxresponse;
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
@@ -133,7 +133,7 @@ void send_responsedata_on_aux( bool istcp, auxtrans_param_t auxtrans, char cid[]
|
|
|
|
|
fprintf( FCGI_stderr, "Error: error in send_responsedata_on_aux(), udp not implemented\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
aux_response_param_t * gene_auxresponse( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, int datalen, int maxlenPerFrame)
|
|
|
|
|
aux_response_param_t * gene_auxresponse( bool istcp, auxtrans_param_t auxtrans, char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
|
|
|
|
|
{
|
|
|
|
|
aux_response_param_t *auxresponse;
|
|
|
|
|
|
|
|
|
|
@@ -175,8 +175,8 @@ void * aux_streaming( void *arg)
|
|
|
|
|
{
|
|
|
|
|
SOCKET connected_socket;
|
|
|
|
|
unsigned char *chunk, *ptr;
|
|
|
|
|
int maxLenOfBody, remlen, chunklen;
|
|
|
|
|
const int headlen = 8;
|
|
|
|
|
OPJ_SIZE_T maxLenOfBody, remlen, chunklen;
|
|
|
|
|
const OPJ_SIZE_T headlen = 8;
|
|
|
|
|
|
|
|
|
|
aux_response_param_t *auxresponse = (aux_response_param_t *)arg;
|
|
|
|
|
|
|
|
|
|
@@ -194,25 +194,25 @@ void * aux_streaming( void *arg)
|
|
|
|
|
if( identify_cid( connected_socket, auxresponse->cid, FCGI_stderr)){
|
|
|
|
|
ptr = auxresponse->data;
|
|
|
|
|
while( 0 < remlen){
|
|
|
|
|
memset( chunk, 0, auxresponse->maxlenPerFrame);
|
|
|
|
|
memset( chunk, 0, auxresponse->maxlenPerFrame);
|
|
|
|
|
|
|
|
|
|
chunklen = remlen<maxLenOfBody?remlen:maxLenOfBody;
|
|
|
|
|
chunklen += headlen;
|
|
|
|
|
|
|
|
|
|
chunk[0] = (chunklen >> 8) & 0xff;
|
|
|
|
|
chunk[1] = chunklen & 0xff;
|
|
|
|
|
chunklen = remlen<maxLenOfBody?remlen:maxLenOfBody;
|
|
|
|
|
chunklen += headlen;
|
|
|
|
|
|
|
|
|
|
memcpy( chunk+headlen, ptr, chunklen-headlen);
|
|
|
|
|
chunk[0] = (chunklen >> 8) & 0xff;
|
|
|
|
|
chunk[1] = chunklen & 0xff;
|
|
|
|
|
|
|
|
|
|
do{
|
|
|
|
|
send_stream( connected_socket, chunk, chunklen);
|
|
|
|
|
}while( !recv_ack( connected_socket, chunk));
|
|
|
|
|
memcpy( chunk+headlen, ptr, chunklen-headlen);
|
|
|
|
|
|
|
|
|
|
remlen -= maxLenOfBody;
|
|
|
|
|
ptr += maxLenOfBody;
|
|
|
|
|
do{
|
|
|
|
|
send_stream( connected_socket, chunk, chunklen);
|
|
|
|
|
}while( !recv_ack( connected_socket, chunk));
|
|
|
|
|
|
|
|
|
|
remlen -= maxLenOfBody;
|
|
|
|
|
ptr += maxLenOfBody;
|
|
|
|
|
}
|
|
|
|
|
if( close_socket( connected_socket) != 0)
|
|
|
|
|
perror("close");
|
|
|
|
|
perror("close");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|