本文整理汇总了C++中i_free函数的典型用法代码示例。如果您正苦于以下问题:C++ i_free函数的具体用法?C++ i_free怎么用?C++ i_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i_free函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: zlib_mailbox_transaction_commit
static int
zlib_mailbox_transaction_commit(struct mailbox_transaction_context *t,
struct mail_transaction_commit_changes *changes_r)
{
union mailbox_module_context *zbox = ZLIB_CONTEXT(t->box);
struct zlib_transaction_context *zt = ZLIB_CONTEXT(t);
int ret;
if (zt->tmp_mail != NULL)
mail_free(&zt->tmp_mail);
ret = zbox->super.transaction_commit(t, changes_r);
i_free(zt);
return ret;
}
示例2: message_search_msg
int message_search_msg(struct message_search_context *ctx,
struct istream *input, struct message_part *parts,
const char **error_r)
{
char *error;
int ret;
T_BEGIN {
ret = message_search_msg_real(ctx, input, parts, error_r);
error = i_strdup(*error_r);
} T_END;
*error_r = t_strdup(error);
i_free(error);
return ret;
}
示例3: tcpwrap_client_destroy
static void tcpwrap_client_destroy(struct tcpwrap_client **_client)
{
struct tcpwrap_client *client = *_client;
*_client = NULL;
timeout_remove(&client->to);
io_remove(&client->io);
if (close(client->fd) < 0)
i_error("close() failed: %m");
i_free(client);
tcpwrap_client = NULL;
master_service_client_connection_destroyed(master_service);
}
示例4: index_sort_list_finish_float
static void
index_sort_list_finish_float(struct mail_search_sort_program *program)
{
ARRAY_TYPE(mail_sort_node_float) *nodes = program->context;
/* NOTE: higher relevancy is returned first, unlike with all
other number based sort keys, so temporarily reverse the search */
static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
array_sort(nodes, sort_node_float_cmp);
static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
memcpy(&program->seqs, nodes, sizeof(program->seqs));
i_free(nodes);
program->context = NULL;
}
示例5: client_destroy
void client_destroy(struct client *client, const char *prefix,
const char *reason)
{
if (client->destroyed)
return;
client->destroyed = TRUE;
client_disconnect(client, prefix, reason);
submission_client_count--;
DLLIST_REMOVE(&submission_clients, client);
if (client->proxy_conn != NULL)
smtp_client_connection_close(&client->proxy_conn);
if (client->anvil_sent) {
master_service_anvil_send(master_service, t_strconcat(
"DISCONNECT\t", my_pid, "\tsubmission/",
mail_user_get_anvil_userip_ident(client->user),
"\n", NULL));
}
if (client->urlauth_ctx != NULL)
imap_urlauth_deinit(&client->urlauth_ctx);
mail_user_unref(&client->user);
mail_storage_service_user_unref(&client->service_user);
client_state_reset(client);
i_free(client->session_id);
i_free(client);
master_service_client_connection_destroyed(master_service);
submission_refresh_proctitle();
}
示例6: connection_list_deinit
void connection_list_deinit(struct connection_list **_list)
{
struct connection_list *list = *_list;
struct connection *conn;
*_list = NULL;
while (list->connections != NULL) {
conn = list->connections;
conn->disconnect_reason = CONNECTION_DISCONNECT_DEINIT;
list->v.destroy(conn);
i_assert(conn != list->connections);
}
i_free(list);
}
示例7: login_access_lookup_free
static void login_access_lookup_free(struct login_access_lookup *lookup)
{
if (lookup->io != NULL)
io_remove(&lookup->io);
if (lookup->access != NULL)
access_lookup_destroy(&lookup->access);
if (lookup->conn.fd != -1) {
if (close(lookup->conn.fd) < 0)
i_error("close(client) failed: %m");
master_service_client_connection_destroyed(master_service);
}
p_strsplit_free(default_pool, lookup->sockets);
i_free(lookup);
}
示例8: mail_transaction_log_move_to_memory
void mail_transaction_log_move_to_memory(struct mail_transaction_log *log)
{
struct mail_transaction_log_file *file;
if (!log->index->initial_mapped && log->files != NULL &&
log->files->hdr.prev_file_seq != 0) {
/* we couldn't read dovecot.index and we don't have the first
.log file, so just start from scratch */
mail_transaction_log_close(log);
}
i_free(log->filepath);
i_free(log->filepath2);
log->filepath = i_strconcat(log->index->filepath,
MAIL_TRANSACTION_LOG_SUFFIX, NULL);
log->filepath2 = i_strconcat(log->filepath, ".2", NULL);
if (log->head != NULL)
mail_transaction_log_file_move_to_memory(log->head);
else {
file = mail_transaction_log_file_alloc_in_memory(log);
mail_transaction_log_set_head(log, file);
}
}
示例9: master_connection_destroy
void master_connection_destroy(struct master_connection **_conn)
{
struct master_connection *conn = *_conn;
*_conn = NULL;
io_remove(&conn->io);
i_stream_destroy(&conn->input);
if (close(conn->fd) < 0)
i_error("close(master conn) failed: %m");
i_free(conn);
master_service_client_connection_destroyed(master_service);
}
示例10: sieve_tool_set_homedir
void sieve_tool_set_homedir(struct sieve_tool *tool, const char *homedir)
{
if ( tool->homedir != NULL ) {
if ( strcmp(homedir, tool->homedir) == 0 )
return;
i_free(tool->homedir);
}
tool->homedir = i_strdup(homedir);
if ( tool->mail_user_dovecot != NULL )
mail_user_set_home(tool->mail_user_dovecot, tool->homedir);
if ( tool->mail_user != NULL )
mail_user_set_home(tool->mail_user, tool->homedir);
}
示例11: mail_index_set_ext_init_data
void mail_index_set_ext_init_data(struct mail_index *index, uint32_t ext_id,
const void *data, size_t size)
{
const struct mail_index_registered_ext *rext;
i_assert(index->ext_hdr_init_data == NULL ||
index->ext_hdr_init_id == ext_id);
rext = array_idx(&index->extensions, ext_id);
i_assert(rext->hdr_size == size);
index->ext_hdr_init_id = ext_id;
i_free(index->ext_hdr_init_data);
index->ext_hdr_init_data = i_malloc(size);
memcpy(index->ext_hdr_init_data, data, size);
}
示例12: mail_storage_service_next
int mail_storage_service_next(struct mail_storage_service_ctx *ctx,
struct mail_storage_service_user *user,
struct mail_user **mail_user_r)
{
char *old_log_prefix = i_strdup(i_get_failure_prefix());
int ret;
mail_storage_service_set_log_prefix(ctx, user->user_set, user,
&user->input, NULL);
i_set_failure_prefix("%s", old_log_prefix);
ret = mail_storage_service_next_real(ctx, user, mail_user_r);
if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) != 0)
i_set_failure_prefix("%s", old_log_prefix);
i_free(old_log_prefix);
return ret;
}
示例13: replicator_connection_destroy
void replicator_connection_destroy(struct replicator_connection **_conn)
{
struct replicator_connection *conn = *_conn;
unsigned int i;
*_conn = NULL;
replicator_connection_disconnect(conn);
for (i = REPLICATION_PRIORITY_LOW; i <= REPLICATION_PRIORITY_SYNC; i++)
buffer_free(&conn->queue[i]);
if (conn->to != NULL)
timeout_remove(&conn->to);
hash_table_destroy(&conn->requests);
i_free(conn);
}
示例14: dns_client_destroy
static void dns_client_destroy(struct dns_client **_client)
{
struct dns_client *client = *_client;
*_client = NULL;
io_remove(&client->io);
i_stream_destroy(&client->input);
o_stream_destroy(&client->output);
if (close(client->fd) < 0)
i_error("close() failed: %m");
i_free(client);
dns_client = NULL;
master_service_client_connection_destroyed(master_service);
}
示例15: fts_parser_tika_deinit
static void fts_parser_tika_deinit(struct fts_parser *_parser)
{
struct tika_fts_parser *parser = (struct tika_fts_parser *)_parser;
if (parser->ioloop != NULL) {
io_remove(&parser->io);
io_loop_destroy(&parser->ioloop);
}
if (parser->payload != NULL)
i_stream_unref(&parser->payload);
/* FIXME: kludgy, http_req should be NULL here if we don't want to
free it. requires lib-http changes. */
if (parser->http_req != NULL)
http_client_request_abort(&parser->http_req);
i_free(parser);
}