return 0;
}
+int _gnutls_epoch_get_compression(gnutls_session_t session, int epoch)
+{
+record_parameters_st *params;
+int ret;
+
+ ret = _gnutls_epoch_get (session, epoch, ¶ms);
+ if (ret < 0)
+ return GNUTLS_COMP_UNKNOWN;
+
+ return params->compression_algorithm;
+}
+
/* Initializes the read connection session
* (read encrypted data)
*/
*/
if (session->internals.resumed == RESUME_FALSE)
{
+
ret = _gnutls_check_algos (session,
&session->
security_parameters.current_cipher_suite,
- session->internals.compression_method);
+ _gnutls_epoch_get_compression(session, epoch_next));
if (ret < 0)
return ret;
ret = _gnutls_check_algos (session,
&session->
security_parameters.current_cipher_suite,
- session->internals.compression_method);
+ _gnutls_epoch_get_compression(session, epoch_next));
if (ret < 0)
return ret;
cipher_suite_st * suite);
int _gnutls_epoch_set_compression (gnutls_session_t session, int epoch_rel,
gnutls_compression_method_t comp_algo);
+int _gnutls_epoch_get_compression (gnutls_session_t session, int epoch_rel);
void _gnutls_epoch_set_null_algos (gnutls_session_t session,
record_parameters_st * params);
int _gnutls_epoch_set_keys (gnutls_session_t session, uint16_t epoch);
return x;
}
- session->internals.compression_method = 0;
-
for (j = 0; j < datalen; j++)
{
for (i = 0; i < x; i++)
gnutls_compression_method_t method =
_gnutls_compression_get_id (comps[i]);
- session->internals.compression_method = method;
gnutls_free (comps);
_gnutls_epoch_set_compression (session, EPOCH_NEXT, method);
_gnutls_handshake_log
("HSK[%p]: Selected Compression Method: %s\n", session,
- gnutls_compression_get_name (session->
- internals.compression_method));
+ gnutls_compression_get_name (method));
return 0;
return GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM;
}
- session->internals.compression_method =
- _gnutls_compression_get_id (comp_method);
- _gnutls_epoch_set_compression (session, EPOCH_NEXT,
- session->internals.compression_method);
+ _gnutls_epoch_set_compression (session, EPOCH_NEXT, _gnutls_compression_get_id(comp_method));
return 0;
}
pos += 2;
comp =
- (uint8_t) _gnutls_compression_get_num (session->internals.
- compression_method);
+ (uint8_t) _gnutls_compression_get_num (
+ _gnutls_epoch_get_compression (session, session->security_parameters.epoch_next));
data[pos++] = comp;
-
if (extdata.length > 0)
{
datalen += extdata.length;
int last_handshake_in;
int last_handshake_out;
- /* this is the compression method we are going to use */
- gnutls_compression_method_t compression_method;
-
/* priorities */
struct gnutls_priority_st priorities;
session->internals.resumed = RESUME_FALSE;
}
- session->internals.compression_method = GNUTLS_COMP_NULL;
- _gnutls_epoch_set_compression (session, EPOCH_NEXT, session->internals.compression_method);
+ _gnutls_epoch_set_compression (session, EPOCH_NEXT, GNUTLS_COMP_NULL);
return 0;
}