From 2cea04165ca4b40d091554a01c4a6f922896ef9b Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Tue, 10 Nov 2015 12:56:07 +0100 Subject: [PATCH] MNDR: - move all data members from MYSQLND_PFC to MYSQLND_PFC_DATA --- ext/mysqlnd/mysqlnd.c | 11 ++-- ext/mysqlnd/mysqlnd_auth.c | 18 +++--- ext/mysqlnd/mysqlnd_protocol_frame_codec.c | 66 +++++++++++----------- ext/mysqlnd/mysqlnd_structs.h | 47 +++++++-------- ext/mysqlnd/mysqlnd_wireprotocol.c | 8 +-- 5 files changed, 72 insertions(+), 78 deletions(-) diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index b0498ef404..9e627782bc 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -543,7 +543,7 @@ mysqlnd_run_authentication( scrambled_data = auth_plugin->methods.get_auth_data(NULL, &scrambled_data_len, conn, user, passwd, passwd_len, plugin_data, plugin_data_len, session_options, - &conn->protocol_frame_codec->data->options, mysql_flags); + conn->protocol_frame_codec->data, mysql_flags); if (conn->error_info->error_no) { goto end; } @@ -685,7 +685,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * mysql_flags &= ~CLIENT_COMPRESS; } #else - if (pfc && pfc->data->options.flags & MYSQLND_NET_FLAG_USE_COMPRESSION) { + if (pfc && pfc->data->flags & MYSQLND_NET_FLAG_USE_COMPRESSION) { mysql_flags |= CLIENT_COMPRESS; } #endif @@ -694,8 +694,11 @@ MYSQLND_METHOD(mysqlnd_conn_data, get_updated_connect_flags)(MYSQLND_CONN_DATA * mysql_flags &= ~CLIENT_SSL; } #else - if (vio && (vio->data->options.ssl_key || vio->data->options.ssl_cert || - vio->data->options.ssl_ca || vio->data->options.ssl_capath || vio->data->options.ssl_cipher)) + if (vio && (vio->data->options.ssl_key || + vio->data->options.ssl_cert || + vio->data->options.ssl_ca || + vio->data->options.ssl_capath || + vio->data->options.ssl_cipher)) { mysql_flags |= CLIENT_SSL; } diff --git a/ext/mysqlnd/mysqlnd_auth.c b/ext/mysqlnd/mysqlnd_auth.c index fd9d174c12..ef343ff6d4 100644 --- a/ext/mysqlnd/mysqlnd_auth.c +++ b/ext/mysqlnd/mysqlnd_auth.c @@ -224,7 +224,7 @@ mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn, if (!PACKET_WRITE(auth_packet)) { SET_CONNECTION_STATE(&conn->state, CONN_QUIT_SENT); - SET_CLIENT_ERROR(conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); + SET_CLIENT_ERROR(conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); goto end; } } @@ -359,7 +359,7 @@ mysqlnd_native_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const MYSQLND_SESSION_OPTIONS * const session_options, - const MYSQLND_PFC_OPTIONS * const ppec_options, + const MYSQLND_PFC_DATA * const pfc_data, zend_ulong mysql_flags ) { @@ -419,7 +419,7 @@ mysqlnd_pam_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self, MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const MYSQLND_SESSION_OPTIONS * const session_options, - const MYSQLND_PFC_OPTIONS * const ppec_options, + const MYSQLND_PFC_DATA * const pfc_data, zend_ulong mysql_flags ) { @@ -480,17 +480,17 @@ mysqlnd_xor_string(char * dst, const size_t dst_len, const char * xor_str, const static RSA * mysqlnd_sha256_get_rsa_key(MYSQLND_CONN_DATA * conn, const MYSQLND_SESSION_OPTIONS * const session_options, - const MYSQLND_PFC_OPTIONS * const io_options + const MYSQLND_PFC_DATA * const pfc_data ) { RSA * ret = NULL; - const char * fname = (io_options->sha256_server_public_key && io_options->sha256_server_public_key[0] != '\0')? - io_options->sha256_server_public_key: + const char * fname = (pfc_data->sha256_server_public_key && pfc_data->sha256_server_public_key[0] != '\0')? + pfc_data->sha256_server_public_key: MYSQLND_G(sha256_server_public_key); php_stream * stream; DBG_ENTER("mysqlnd_sha256_get_rsa_key"); DBG_INF_FMT("options_s256_pk=[%s] MYSQLND_G(sha256_server_public_key)=[%s]", - io_options->sha256_server_public_key? io_options->sha256_server_public_key:"n/a", + pfc_data->sha256_server_public_key? pfc_data->sha256_server_public_key:"n/a", MYSQLND_G(sha256_server_public_key)? MYSQLND_G(sha256_server_public_key):"n/a"); if (!fname || fname[0] == '\0') { MYSQLND_PACKET_SHA256_PK_REQUEST * pk_req_packet = NULL; @@ -569,7 +569,7 @@ mysqlnd_sha256_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const MYSQLND_SESSION_OPTIONS * const session_options, - const MYSQLND_PFC_OPTIONS * const ppec_options, + const MYSQLND_PFC_DATA * const pfc_data, zend_ulong mysql_flags ) { @@ -587,7 +587,7 @@ mysqlnd_sha256_auth_get_auth_data(struct st_mysqlnd_authentication_plugin * self memcpy(ret, passwd, passwd_len); } else { *auth_data_len = 0; - server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, ppec_options); + server_public_key = mysqlnd_sha256_get_rsa_key(conn, session_options, pfc_data); if (server_public_key) { int server_public_key_len; diff --git a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c index 9732c3c1ca..fccfd31a6b 100644 --- a/ext/mysqlnd/mysqlnd_protocol_frame_codec.c +++ b/ext/mysqlnd/mysqlnd_protocol_frame_codec.c @@ -36,7 +36,7 @@ static enum_func_status MYSQLND_METHOD(mysqlnd_pfc, reset)(MYSQLND_PFC * const pfc, MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info) { DBG_ENTER("mysqlnd_pfc::reset"); - pfc->packet_no = pfc->compressed_envelope_packet_no = 0; + pfc->data->packet_no = pfc->data->compressed_envelope_packet_no = 0; DBG_RETURN(PASS); } /* }}} */ @@ -88,8 +88,8 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v to_be_sent = MIN(left, MYSQLND_MAX_PACKET_SIZE); DBG_INF_FMT("to_be_sent=%u", to_be_sent); DBG_INF_FMT("packets_sent=%u", packets_sent); - DBG_INF_FMT("compressed_envelope_packet_no=%u", pfc->compressed_envelope_packet_no); - DBG_INF_FMT("packet_no=%u", pfc->packet_no); + DBG_INF_FMT("compressed_envelope_packet_no=%u", pfc->data->compressed_envelope_packet_no); + DBG_INF_FMT("packet_no=%u", pfc->data->packet_no); #ifdef MYSQLND_COMPRESSION_ENABLED if (pfc->data->compressed == TRUE) { /* here we need to compress the data and then write it, first comes the compressed header */ @@ -99,7 +99,7 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v STORE_HEADER_SIZE(safe_storage, uncompressed_payload); int3store(uncompressed_payload, to_be_sent); - int1store(uncompressed_payload + 3, pfc->packet_no); + int1store(uncompressed_payload + 3, pfc->data->packet_no); if (PASS == pfc->data->m.encode((compress_buf + COMPRESSED_HEADER_SIZE + MYSQLND_HEADER_SIZE), &tmp_complen, uncompressed_payload, to_be_sent + MYSQLND_HEADER_SIZE)) { @@ -113,10 +113,10 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v RESTORE_HEADER_SIZE(uncompressed_payload, safe_storage); int3store(compress_buf, payload_size); - int1store(compress_buf + 3, pfc->packet_no); + int1store(compress_buf + 3, pfc->data->packet_no); DBG_INF_FMT("writing "MYSQLND_SZ_T_SPEC" bytes to the network", payload_size + MYSQLND_HEADER_SIZE + COMPRESSED_HEADER_SIZE); bytes_sent = vio->data->m.network_write(vio, compress_buf, payload_size + MYSQLND_HEADER_SIZE + COMPRESSED_HEADER_SIZE, conn_stats, error_info); - pfc->compressed_envelope_packet_no++; + pfc->data->compressed_envelope_packet_no++; #if WHEN_WE_NEED_TO_CHECK_WHETHER_COMPRESSION_WORKS_CORRECTLY if (res == Z_OK) { size_t decompressed_size = left + MYSQLND_HEADER_SIZE; @@ -145,12 +145,12 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v DBG_INF("no compression"); STORE_HEADER_SIZE(safe_storage, p); int3store(p, to_be_sent); - int1store(p + 3, pfc->packet_no); + int1store(p + 3, pfc->data->packet_no); bytes_sent = vio->data->m.network_write(vio, p, to_be_sent + MYSQLND_HEADER_SIZE, conn_stats, error_info); RESTORE_HEADER_SIZE(p, safe_storage); - pfc->compressed_envelope_packet_no++; + pfc->data->compressed_envelope_packet_no++; } - pfc->packet_no++; + pfc->data->packet_no++; p += to_be_sent; left -= to_be_sent; @@ -164,7 +164,7 @@ MYSQLND_METHOD(mysqlnd_pfc, send)(MYSQLND_PFC * const pfc, MYSQLND_VIO * const v */ } while (bytes_sent && (left > 0 || to_be_sent == MYSQLND_MAX_PACKET_SIZE)); - DBG_INF_FMT("packet_size="MYSQLND_SZ_T_SPEC" packet_no=%u", left, pfc->packet_no); + DBG_INF_FMT("packet_size="MYSQLND_SZ_T_SPEC" packet_no=%u", left, pfc->data->packet_no); MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, STAT_BYTES_SENT, count + packets_sent * MYSQLND_HEADER_SIZE, @@ -276,15 +276,15 @@ MYSQLND_METHOD(mysqlnd_pfc, read_compressed_packet_from_stream_and_fill_read_buf retval = FAIL; goto end; } - pfc->uncompressed_data = mysqlnd_create_read_buffer(decompressed_size); - retval = pfc->data->m.decode(pfc->uncompressed_data->data, decompressed_size, compressed_data, net_payload_size); + pfc->data->uncompressed_data = mysqlnd_create_read_buffer(decompressed_size); + retval = pfc->data->m.decode(pfc->data->uncompressed_data->data, decompressed_size, compressed_data, net_payload_size); if (FAIL == retval) { goto end; } } else { DBG_INF_FMT("The server decided not to compress the data. Our job is easy. Copying %u bytes", net_payload_size); - pfc->uncompressed_data = mysqlnd_create_read_buffer(net_payload_size); - if (FAIL == vio->data->m.network_read(vio, pfc->uncompressed_data->data, net_payload_size, conn_stats, error_info)) { + pfc->data->uncompressed_data = mysqlnd_create_read_buffer(net_payload_size); + if (FAIL == vio->data->m.network_read(vio, pfc->data->uncompressed_data->data, net_payload_size, conn_stats, error_info)) { retval = FAIL; goto end; } @@ -361,18 +361,18 @@ MYSQLND_METHOD(mysqlnd_pfc, receive)(MYSQLND_PFC * const pfc, MYSQLND_VIO * cons DBG_ENTER("mysqlnd_pfc::receive"); #ifdef MYSQLND_COMPRESSION_ENABLED if (pfc->data->compressed) { - if (pfc->uncompressed_data) { - size_t to_read_from_buffer = MIN(pfc->uncompressed_data->bytes_left(pfc->uncompressed_data), to_read); + if (pfc->data->uncompressed_data) { + size_t to_read_from_buffer = MIN(pfc->data->uncompressed_data->bytes_left(pfc->data->uncompressed_data), to_read); DBG_INF_FMT("reading "MYSQLND_SZ_T_SPEC" from uncompressed_data buffer", to_read_from_buffer); if (to_read_from_buffer) { - pfc->uncompressed_data->read(pfc->uncompressed_data, to_read_from_buffer, (zend_uchar *) p); + pfc->data->uncompressed_data->read(pfc->data->uncompressed_data, to_read_from_buffer, (zend_uchar *) p); p += to_read_from_buffer; to_read -= to_read_from_buffer; } DBG_INF_FMT("left "MYSQLND_SZ_T_SPEC" to read", to_read); - if (TRUE == pfc->uncompressed_data->is_empty(pfc->uncompressed_data)) { + if (TRUE == pfc->data->uncompressed_data->is_empty(pfc->data->uncompressed_data)) { /* Everything was consumed. This should never happen here, but for security */ - pfc->uncompressed_data->free_buffer(&pfc->uncompressed_data); + pfc->data->uncompressed_data->free_buffer(&pfc->data->uncompressed_data); } } if (to_read) { @@ -385,15 +385,15 @@ MYSQLND_METHOD(mysqlnd_pfc, receive)(MYSQLND_PFC * const pfc, MYSQLND_VIO * cons } net_payload_size = uint3korr(net_header); packet_no = uint1korr(net_header + 3); - if (pfc->compressed_envelope_packet_no != packet_no) { + if (pfc->data->compressed_envelope_packet_no != packet_no) { DBG_ERR_FMT("Transport level: packets out of order. Expected %u received %u. Packet size="MYSQLND_SZ_T_SPEC, - pfc->compressed_envelope_packet_no, packet_no, net_payload_size); + pfc->data->compressed_envelope_packet_no, packet_no, net_payload_size); php_error(E_WARNING, "Packets out of order. Expected %u received %u. Packet size="MYSQLND_SZ_T_SPEC, - pfc->compressed_envelope_packet_no, packet_no, net_payload_size); + pfc->data->compressed_envelope_packet_no, packet_no, net_payload_size); DBG_RETURN(FAIL); } - pfc->compressed_envelope_packet_no++; + pfc->data->compressed_envelope_packet_no++; #ifdef MYSQLND_DUMP_HEADER_N_BODY DBG_INF_FMT("HEADER: hwd_packet_no=%u size=%3u", packet_no, (zend_ulong) net_payload_size); #endif @@ -424,15 +424,15 @@ MYSQLND_METHOD(mysqlnd_pfc, set_client_option)(MYSQLND_PFC * const pfc, enum_mys DBG_INF_FMT("option=%u", option); switch (option) { case MYSQL_OPT_COMPRESS: - pfc->data->options.flags |= MYSQLND_NET_FLAG_USE_COMPRESSION; + pfc->data->flags |= MYSQLND_NET_FLAG_USE_COMPRESSION; break; case MYSQL_SERVER_PUBLIC_KEY: { zend_bool pers = pfc->persistent; - if (pfc->data->options.sha256_server_public_key) { - mnd_pefree(pfc->data->options.sha256_server_public_key, pers); + if (pfc->data->sha256_server_public_key) { + mnd_pefree(pfc->data->sha256_server_public_key, pers); } - pfc->data->options.sha256_server_public_key = value? mnd_pestrdup(value, pers) : NULL; + pfc->data->sha256_server_public_key = value? mnd_pestrdup(value, pers) : NULL; break; } default: @@ -450,13 +450,13 @@ MYSQLND_METHOD(mysqlnd_pfc, free_contents)(MYSQLND_PFC * pfc) DBG_ENTER("mysqlnd_pfc::free_contents"); #ifdef MYSQLND_COMPRESSION_ENABLED - if (pfc->uncompressed_data) { - pfc->uncompressed_data->free_buffer(&pfc->uncompressed_data); + if (pfc->data->uncompressed_data) { + pfc->data->uncompressed_data->free_buffer(&pfc->data->uncompressed_data); } #endif - if (pfc->data->options.sha256_server_public_key) { - mnd_pefree(pfc->data->options.sha256_server_public_key, pfc->persistent); - pfc->data->options.sha256_server_public_key = NULL; + if (pfc->data->sha256_server_public_key) { + mnd_pefree(pfc->data->sha256_server_public_key, pfc->persistent); + pfc->data->sha256_server_public_key = NULL; } DBG_VOID_RETURN; @@ -518,7 +518,7 @@ mysqlnd_pfc_init(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO { MYSQLND_PFC * pfc; DBG_ENTER("mysqlnd_pfc_init"); - pfc = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_net(persistent, stats, error_info); + pfc = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_protocol_frame_codec(persistent, stats, error_info); DBG_RETURN(pfc); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index ba5a525877..6e1dfa49a1 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -233,14 +233,6 @@ typedef struct st_mysqlnd_session_options } MYSQLND_SESSION_OPTIONS; -typedef struct st_mysqlnd_protocol_frame_codec_options -{ - uint64_t flags; - - char * sha256_server_public_key; -} MYSQLND_PFC_OPTIONS; - - typedef struct st_mysqlnd_vio_options { /* timeouts */ @@ -376,7 +368,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory); typedef MYSQLND * (*func_mysqlnd_object_factory__get_connection)(struct st_mysqlnd_object_factory_methods * factory, zend_bool persistent); typedef MYSQLND * (*func_mysqlnd_object_factory__clone_connection_object)(MYSQLND * conn); typedef MYSQLND_STMT * (*func_mysqlnd_object_factory__get_prepared_statement)(MYSQLND_CONN_DATA * conn, zend_bool persistent); -typedef MYSQLND_PFC * (*func_mysqlnd_object_factory__get_net)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); +typedef MYSQLND_PFC * (*func_mysqlnd_object_factory__get_pfc)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); typedef MYSQLND_VIO * (*func_mysqlnd_object_factory__get_vio)(zend_bool persistent, MYSQLND_STATS * stats, MYSQLND_ERROR_INFO * error_info); typedef MYSQLND_PROTOCOL_PAYLOAD_DECODER_FACTORY * (*func_mysqlnd_object_factory__get_protocol_payload_decoder_factory)(MYSQLND_CONN_DATA * conn, zend_bool persistent); @@ -386,7 +378,7 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_object_factory) func_mysqlnd_object_factory__get_connection get_connection; func_mysqlnd_object_factory__clone_connection_object clone_connection_object; func_mysqlnd_object_factory__get_prepared_statement get_prepared_statement; - func_mysqlnd_object_factory__get_net get_net; + func_mysqlnd_object_factory__get_pfc get_protocol_frame_codec; func_mysqlnd_object_factory__get_vio get_vio; func_mysqlnd_object_factory__get_protocol_payload_decoder_factory get_protocol_payload_decoder_factory; }; @@ -1114,14 +1106,23 @@ MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) struct st_mysqlnd_protocol_frame_codec_data { - php_stream *stream; - zend_bool compressed; - zend_bool ssl; - MYSQLND_PFC_OPTIONS options; + php_stream *stream; + zend_bool compressed; + zend_bool ssl; + uint64_t flags; + char * sha256_server_public_key; - unsigned int refcount; +#ifdef MYSQLND_COMPRESSION_ENABLED + MYSQLND_READ_BUFFER * uncompressed_data; +#else + void * unused_pad1; +#endif - zend_bool persistent; + /* sequence for simple checking of correct packets */ + zend_uchar packet_no; + zend_uchar compressed_envelope_packet_no; + + zend_bool persistent; MYSQLND_CLASS_METHODS_TYPE(mysqlnd_protocol_packet_envelope_codec) m; }; @@ -1131,17 +1132,7 @@ struct st_mysqlnd_protocol_frame_codec { struct st_mysqlnd_protocol_frame_codec_data * data; -#ifdef MYSQLND_COMPRESSION_ENABLED - MYSQLND_READ_BUFFER * uncompressed_data; -#else - void * unused_pad1; -#endif - - zend_bool persistent; - - /* sequence for simple checking of correct packets */ - zend_uchar packet_no; - zend_uchar compressed_envelope_packet_no; + zend_bool persistent; }; @@ -1366,7 +1357,7 @@ typedef zend_uchar * (*func_auth_plugin__get_auth_data)(struct st_mysqlnd_authen MYSQLND_CONN_DATA * conn, const char * const user, const char * const passwd, const size_t passwd_len, zend_uchar * auth_plugin_data, size_t auth_plugin_data_len, const MYSQLND_SESSION_OPTIONS * const session_options, - const MYSQLND_PFC_OPTIONS * const pfc_options, zend_ulong mysql_flags + const MYSQLND_PFC_DATA * const pfc_data, zend_ulong mysql_flags ); struct st_mysqlnd_authentication_plugin diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index af0f01091f..204c8fbe7f 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -265,21 +265,21 @@ mysqlnd_read_header(MYSQLND_PFC * pfc, MYSQLND_VIO * vio, MYSQLND_PACKET_HEADER STAT_PROTOCOL_OVERHEAD_IN, MYSQLND_HEADER_SIZE, STAT_PACKETS_RECEIVED, 1); - if (pfc->data->compressed || pfc->packet_no == header->packet_no) { + if (pfc->data->compressed || pfc->data->packet_no == header->packet_no) { /* Have to increase the number, so we can send correct number back. It will round at 255 as this is unsigned char. The server needs this for simple flow control checking. */ - pfc->packet_no++; + pfc->data->packet_no++; DBG_RETURN(PASS); } DBG_ERR_FMT("Logical link: packets out of order. Expected %u received %u. Packet size="MYSQLND_SZ_T_SPEC, - pfc->packet_no, header->packet_no, header->size); + pfc->data->packet_no, header->packet_no, header->size); php_error(E_WARNING, "Packets out of order. Expected %u received %u. Packet size="MYSQLND_SZ_T_SPEC, - pfc->packet_no, header->packet_no, header->size); + pfc->data->packet_no, header->packet_no, header->size); DBG_RETURN(FAIL); } /* }}} */ -- 2.50.1