Beispiel #1
0
SilcBool silc_server_send_notify_channel_change(SilcServer server,
						SilcPacketStream stream,
						SilcBool broadcast,
						SilcChannelID *old_id,
						SilcChannelID *new_id)
{
  SilcBuffer idp1, idp2;
  SilcBool ret = FALSE;

  if (!server || !stream)
    return ret;

  idp1 = silc_id_payload_encode((void *)old_id, SILC_ID_CHANNEL);
  idp2 = silc_id_payload_encode((void *)new_id, SILC_ID_CHANNEL);
  if (!idp1 || !idp2)
    return ret;

  ret = silc_server_send_notify(server, stream, broadcast,
				SILC_NOTIFY_TYPE_CHANNEL_CHANGE,
				2, idp1->data, silc_buffer_len(idp1),
				idp2->data, silc_buffer_len(idp2));
  silc_buffer_free(idp1);
  silc_buffer_free(idp2);

  return ret;
}
Beispiel #2
0
SilcBool silc_server_send_new_id(SilcPacketStream stream,
				 SilcBool broadcast,
				 void *id, SilcIdType id_type)
{
  SilcBuffer idp;
  SilcBool ret = FALSE;

  if (!stream || !id)
    return ret;

  SILC_LOG_DEBUG(("Sending new ID (%s)", silc_id_render(id, id_type)));

  idp = silc_id_payload_encode(id, id_type);
  if (!idp)
    return ret;

  ret = silc_packet_send(stream, SILC_PACKET_NEW_ID,
			 broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
			 idp->data, silc_buffer_len(idp));

  silc_buffer_free(idp);
  return ret;
}
void event_channel_connection_init(struct event *event)
{
	struct channel_connection *chconn = event_get_control(event, channel_conn);

	if( !IS_SILC_CHCONN(chconn) )
		return;

	SilcBuffer idp;
	struct i_silc_gateway_connection *silc_gwconn =
		(struct i_silc_gateway_connection *)chconn->gwconn;
	const char *channel_str = chconn->channel->name;

	idp = silc_id_payload_encode(silc_gwconn->conn->local_id,
			SILC_ID_CLIENT);

	i_assert(idp != NULL);

	silc_client_command_call(silc_gwconn->client, silc_gwconn->conn,
			"JOIN", channel_str);
//	silc_client_command_send(silc_gwconn->client, silc_gwconn->conn,
//			SILC_COMMAND_JOIN, 0, 2, 1, channel_str,
//			strlen(channel_str), 2, silc_buffer_len(idp), idp->len);
}