Exemplo n.º 1
0
void
net_write_error (int sock, int version, char *driver_info, char *cas_info, int cas_info_size, int indicator, int code,
		 char *msg)
{
  size_t len = NET_SIZE_INT;
  size_t err_msg_len = 0;
  char err_msg[ERR_MSG_LENGTH];

  assert (code != NO_ERROR);

  if (version >= CAS_MAKE_VER (8, 3, 0))
    {
      len += NET_SIZE_INT;
    }

  err_msg_len = net_error_append_shard_info (err_msg, msg, ERR_MSG_LENGTH);
  if (err_msg_len > 0)
    {
      len += err_msg_len + 1;
    }
  net_write_int (sock, len);

  if (cas_info_size > 0)
    {
      net_write_stream (sock, cas_info, cas_info_size);
    }

  if (version >= CAS_MAKE_VER (8, 3, 0))
    {
      net_write_int (sock, indicator);
    }

  if (!DOES_CLIENT_MATCH_THE_PROTOCOL (version, PROTOCOL_V2) && !cas_di_understand_renewed_error_code (driver_info)
      && code != NO_ERROR)
    {
      if (indicator == CAS_ERROR_INDICATOR || code == CAS_ER_NOT_AUTHORIZED_CLIENT)
	{
	  code = CAS_CONV_ERROR_TO_OLD (code);
	}
    }

  net_write_int (sock, code);
  if (err_msg_len > 0)
    {
      net_write_stream (sock, err_msg, err_msg_len + 1);
    }
}
Exemplo n.º 2
0
T_BROKER_VERSION
hm_get_broker_version (T_CON_HANDLE * con_handle)
{
  T_BROKER_VERSION version = 0;

  if (con_handle->broker_info[BROKER_INFO_PROTO_VERSION]
      & CAS_PROTO_INDICATOR)
    {
      version =
	CAS_PROTO_UNPACK_NET_VER (con_handle->
				  broker_info[BROKER_INFO_PROTO_VERSION]);
    }
  else
    {
      version =
	CAS_MAKE_VER (con_handle->broker_info[BROKER_INFO_MAJOR_VERSION],
		      con_handle->broker_info[BROKER_INFO_MINOR_VERSION],
		      con_handle->broker_info[BROKER_INFO_PATCH_VERSION]);
    }

  return version;
}