本文整理汇总了C++中connection_free函数的典型用法代码示例。如果您正苦于以下问题:C++ connection_free函数的具体用法?C++ connection_free怎么用?C++ connection_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了connection_free函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: conn_init
int conn_init(struct connection *conn)
{
assert(conn);
memset(conn, 0, sizeof(*conn));
pthread_mutex_init(&conn->worker_lock, NULL);
conn->id = mtrandom_uint(UINT32_MAX);
conn->rbufs = CONN_BUFSIZE;
if ((conn->rbuf = malloc(conn->rbufs)) == NULL) {
log_printfn("connection", "failed allocating receive buffer for connection");
connection_free(conn);
return 1;
}
conn->sbufs = CONN_MAXBUFSIZE;
if ((conn->sbuf = malloc(conn->sbufs)) == NULL) {
log_printfn("connection", "failed allocating send buffer for connection");
connection_free(conn);
return 1;
}
INIT_LIST_HEAD(&conn->list);
INIT_LIST_HEAD(&conn->work);
return 0;
}
开发者ID:neg,项目名称:yastg,代码行数:28,代码来源:connection.c
示例2: spawn_cpuworker
/** Launch a new cpuworker. Return 0 if we're happy, -1 if we failed.
*/
static int
spawn_cpuworker(void)
{
tor_socket_t *fdarray;
tor_socket_t fd;
connection_t *conn;
int err;
fdarray = tor_malloc(sizeof(tor_socket_t)*2);
if ((err = tor_socketpair(AF_UNIX, SOCK_STREAM, 0, fdarray)) < 0) {
log_warn(LD_NET, "Couldn't construct socketpair for cpuworker: %s",
tor_socket_strerror(-err));
tor_free(fdarray);
return -1;
}
tor_assert(SOCKET_OK(fdarray[0]));
tor_assert(SOCKET_OK(fdarray[1]));
fd = fdarray[0];
if (spawn_func(cpuworker_main, (void*)fdarray) < 0) {
tor_close_socket(fdarray[0]);
tor_close_socket(fdarray[1]);
tor_free(fdarray);
return -1;
}
log_debug(LD_OR,"just spawned a cpu worker.");
#ifndef TOR_IS_MULTITHREADED
tor_close_socket(fdarray[1]); /* don't need the worker's side of the pipe */
tor_free(fdarray);
#endif
conn = connection_new(CONN_TYPE_CPUWORKER, AF_UNIX);
/* set up conn so it's got all the data we need to remember */
conn->s = fd;
conn->address = tor_strdup("localhost");
tor_addr_make_unspec(&conn->addr);
if (set_socket_nonblocking(fd) == -1) {
connection_free(conn); /* this closes fd */
return -1;
}
if (connection_add(conn) < 0) { /* no space, forget it */
log_warn(LD_NET,"connection_add for cpuworker failed. Giving up.");
connection_free(conn); /* this closes fd */
return -1;
}
conn->state = CPUWORKER_STATE_IDLE;
connection_start_reading(conn);
return 0; /* success */
}
开发者ID:AllardJ,项目名称:Tomato,代码行数:57,代码来源:cpuworker.c
示例3: server_connection_remove
static void server_connection_remove(ServerPtr server, ConnectionPtr conn) {
if (server && conn) {
ListNodePtr node = list_find(server->connections, list_equal, conn);
list_remove(server->connections, node);
connection_free(conn);
}
}
开发者ID:NhaTrang,项目名称:daliserver,代码行数:7,代码来源:net.c
示例4: connect_cb
static int connect_cb(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
Connection *c = userdata;
socklen_t solen;
int error, r;
assert(s);
assert(fd >= 0);
assert(c);
solen = sizeof(error);
r = getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, &solen);
if (r < 0) {
log_error_errno(errno, "Failed to issue SO_ERROR: %m");
goto fail;
}
if (error != 0) {
log_error_errno(error, "Failed to connect to remote host: %m");
goto fail;
}
c->client_event_source = sd_event_source_unref(c->client_event_source);
return connection_complete(c);
fail:
connection_free(c);
return 0; /* ignore errors, continue serving */
}
开发者ID:floppym,项目名称:systemd,代码行数:29,代码来源:socket-proxyd.c
示例5: http_connector_connect
ProxyConnection*
http_connector_connect( HttpService* service,
SockAddress* address )
{
Connection* conn;
int s;
s = socket_create_inet( SOCKET_STREAM );
if (s < 0)
return NULL;
conn = qemu_mallocz(sizeof(*conn));
if (conn == NULL) {
socket_close(s);
return NULL;
}
proxy_connection_init( conn->root, s, address, service->root,
connection_free,
connection_select,
connection_poll );
if ( connection_init( conn ) < 0 ) {
connection_free( conn->root );
return NULL;
}
return conn->root;
}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:29,代码来源:proxy_http_connector.c
示例6: test_conn_get_basic_teardown
static int
test_conn_get_basic_teardown(const struct testcase_t *tc, void *arg)
{
(void)tc;
connection_t *conn = arg;
tt_assert(conn);
assert_connection_ok(conn, time(NULL));
/* teardown the connection as fast as possible */
if (conn->linked_conn) {
assert_connection_ok(conn->linked_conn, time(NULL));
/* We didn't call tor_libevent_initialize(), so event_base was NULL,
* so we can't rely on connection_unregister_events() use of event_del().
*/
if (conn->linked_conn->read_event) {
tor_free(conn->linked_conn->read_event);
conn->linked_conn->read_event = NULL;
}
if (conn->linked_conn->write_event) {
tor_free(conn->linked_conn->write_event);
conn->linked_conn->write_event = NULL;
}
if (!conn->linked_conn->marked_for_close) {
connection_close_immediate(conn->linked_conn);
connection_mark_for_close(conn->linked_conn);
}
conn->linked_conn->linked_conn = NULL;
connection_free(conn->linked_conn);
conn->linked_conn = NULL;
}
/* We didn't set the events up properly, so we can't use event_del() in
* close_closeable_connections() > connection_free()
* > connection_unregister_events() */
if (conn->read_event) {
tor_free(conn->read_event);
conn->read_event = NULL;
}
if (conn->write_event) {
tor_free(conn->write_event);
conn->write_event = NULL;
}
if (!conn->marked_for_close) {
connection_close_immediate(conn);
connection_mark_for_close(conn);
}
close_closeable_connections();
/* The unit test will fail if we return 0 */
return 1;
/* When conn == NULL, we can't cleanup anything */
done:
return 0;
}
开发者ID:1833183060,项目名称:tor-1,代码行数:60,代码来源:test_connection.c
示例7: free_queue
void free_queue()
{
connection *cxt;
while((cxt = cxt_dequeue(&cxt_spare_q))) {
connection_free(cxt);
}
while((cxt = cxt_dequeue(&cxt_est_q))) {
connection_free(cxt);
}
if (cxt_hash != NULL) {
free(cxt_hash);
}
printf("\nqueue memory has been cleared");
}
开发者ID:Madmanrage,项目名称:nftracker,代码行数:17,代码来源:util-session.c
示例8: get_version
/*
* Get version number
*/
static gint get_version(QQInfo *info)
{
int ret = NO_ERR;
Request *req = request_new();
Response *rps = NULL;
gint res = 0;
request_set_method(req, "GET");
request_set_version(req, "HTTP/1.1");
request_set_uri(req, VERPATH);
request_set_default_headers(req);
request_add_header(req, "Host", LOGINPAGEHOST);
Connection *con = connect_to_host(LOGINPAGEHOST, 80);
if(con == NULL){
g_warning("Can NOT connect to server!(%s, %d)"
, __FILE__, __LINE__);
request_del(req);
return NETWORK_ERR;
}
send_request(con, req);
res = rcv_response(con, &rps);
close_con(con);
connection_free(con);
const gchar *retstatus = rps -> status -> str;
if (-1 == res || !rps) {
g_warning("Null point access (%s, %d)\n", __FILE__, __LINE__);
ret = -1;
goto error;
}
if(g_strstr_len(retstatus, -1, "200") == NULL){
g_warning("Server status %s (%s, %d)", retstatus
, __FILE__, __LINE__);
ret = NETWORK_ERR;
goto error;
}
gchar *lb, *rb;
gchar *ms = rps -> msg -> str;
lb = g_strstr_len(ms, -1, "(");
if(lb == NULL){
g_warning("Get version error!! %s (%s, %d)",rps -> msg -> str
, __FILE__, __LINE__);
ret = NETWORK_ERR;
goto error;
}
++lb;
rb = g_strstr_len(ms, -1, ")");
*rb = '\0';
info -> version = g_string_new(lb);
g_debug("Version: %s(%s, %d)", lb, __FILE__, __LINE__);
error:
request_del(req);
response_del(rps);
return ret;
}
开发者ID:wanderxjtu,项目名称:gtkqq,代码行数:58,代码来源:qqlogin.c
示例9: prv_connections_free
static void prv_connections_free(lwm2m_context_t * context)
{
client_data_t * app_data;
app_data = context->userData;
if (NULL != app_data)
{
connection_free(app_data->connList);
app_data->connList = NULL;
}
}
开发者ID:tknv,项目名称:wakaama,代码行数:11,代码来源:lwm2mclient.c
示例10: connection_free
void connection_free(connection_t * connList)
{
if (connList != NULL)
{
connection_t * nextP;
nextP = connList->next;
free(connList);
connection_free(nextP);
}
}
开发者ID:01org,项目名称:liblwm2m,代码行数:12,代码来源:connection.c
示例11: dnsserv_launch_request
/** Helper function: called whenever the client sends a resolve request to our
* controller. We need to eventually answer the request <b>req</b>.
* Returns 0 if the controller will be getting (or has gotten) an event in
* response; -1 if we couldn't launch the request.
*/
int
dnsserv_launch_request(const char *name, int reverse)
{
entry_connection_t *entry_conn;
edge_connection_t *conn;
char *q_name;
/* Make a new dummy AP connection, and attach the request to it. */
entry_conn = entry_connection_new(CONN_TYPE_AP, AF_INET);
conn = ENTRY_TO_EDGE_CONN(entry_conn);
conn->base_.state = AP_CONN_STATE_RESOLVE_WAIT;
if (reverse)
entry_conn->socks_request->command = SOCKS_COMMAND_RESOLVE_PTR;
else
entry_conn->socks_request->command = SOCKS_COMMAND_RESOLVE;
conn->is_dns_request = 1;
strlcpy(entry_conn->socks_request->address, name,
sizeof(entry_conn->socks_request->address));
entry_conn->socks_request->listener_type = CONN_TYPE_CONTROL_LISTENER;
entry_conn->original_dest_address = tor_strdup(name);
entry_conn->session_group = SESSION_GROUP_CONTROL_RESOLVE;
entry_conn->nym_epoch = get_signewnym_epoch();
entry_conn->isolation_flags = ISO_DEFAULT;
if (connection_add(TO_CONN(conn))<0) {
log_warn(LD_APP, "Couldn't register dummy connection for RESOLVE request");
connection_free(TO_CONN(conn));
return -1;
}
/* Now, unless a controller asked us to leave streams unattached,
* throw the connection over to get rewritten (which will
* answer it immediately if it's in the cache, or completely bogus, or
* automapped), and then attached to a circuit. */
log_info(LD_APP, "Passing request for %s to rewrite_and_attach.",
escaped_safe_str_client(name));
q_name = tor_strdup(name); /* q could be freed in rewrite_and_attach */
connection_ap_rewrite_and_attach_if_allowed(entry_conn, NULL, NULL);
/* Now, the connection is marked if it was bad. */
log_info(LD_APP, "Passed request for %s to rewrite_and_attach_if_allowed.",
escaped_safe_str_client(q_name));
tor_free(q_name);
return 0;
}
开发者ID:fatline,项目名称:Tor-Puzzles,代码行数:54,代码来源:dnsserv.c
示例12: context_free
static void context_free(Context *context) {
sd_event_source *es;
Connection *c;
assert(context);
while ((es = set_steal_first(context->listen)))
sd_event_source_unref(es);
while ((c = set_first(context->connections)))
connection_free(c);
set_free(context->listen);
set_free(context->connections);
}
开发者ID:ariscop,项目名称:systemd,代码行数:15,代码来源:socket-proxyd.c
示例13: resolve_remote
static int resolve_remote(Connection *c) {
static const struct addrinfo hints = {
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_STREAM,
.ai_flags = AI_ADDRCONFIG
};
union sockaddr_union sa = {};
const char *node, *service;
int r;
if (IN_SET(arg_remote_host[0], '/', '@')) {
int salen;
salen = sockaddr_un_set_path(&sa.un, arg_remote_host);
if (salen < 0) {
log_error_errno(salen, "Specified address doesn't fit in an AF_UNIX address, refusing: %m");
goto fail;
}
return connection_start(c, &sa.sa, salen);
}
service = strrchr(arg_remote_host, ':');
if (service) {
node = strndupa(arg_remote_host, service - arg_remote_host);
service++;
} else {
node = arg_remote_host;
service = "80";
}
log_debug("Looking up address info for %s:%s", node, service);
r = sd_resolve_getaddrinfo(c->context->resolve, &c->resolve_query, node, service, &hints, resolve_cb, c);
if (r < 0) {
log_error_errno(r, "Failed to resolve remote host: %m");
goto fail;
}
return 0;
fail:
connection_free(c);
return 0; /* ignore errors, continue serving */
}
开发者ID:floppym,项目名称:systemd,代码行数:46,代码来源:socket-proxyd.c
示例14: topic_remove_connection
void topic_remove_connection(topic_t* t, connection_t* con)
{
comms_disconnect(con->socketfd);
list_item_t* item = t->conns->begin;
while(item != NULL)
{
if(item->data == con)
{
connection_free(con);
list_remove_item(t->conns, item);
return;
}
item = item->next;
}
}
开发者ID:RoboticLtd,项目名称:pico-ros,代码行数:18,代码来源:topic.c
示例15: traffic_cb
static int traffic_cb(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
Connection *c = userdata;
int r;
assert(s);
assert(fd >= 0);
assert(c);
r = connection_shovel(c,
&c->server_fd, c->server_to_client_buffer, &c->client_fd,
&c->server_to_client_buffer_full, &c->server_to_client_buffer_size,
&c->server_event_source, &c->client_event_source);
if (r < 0)
goto quit;
r = connection_shovel(c,
&c->client_fd, c->client_to_server_buffer, &c->server_fd,
&c->client_to_server_buffer_full, &c->client_to_server_buffer_size,
&c->client_event_source, &c->server_event_source);
if (r < 0)
goto quit;
/* EOF on both sides? */
if (c->server_fd == -1 && c->client_fd == -1)
goto quit;
/* Server closed, and all data written to client? */
if (c->server_fd == -1 && c->server_to_client_buffer_full <= 0)
goto quit;
/* Client closed, and all data written to server? */
if (c->client_fd == -1 && c->client_to_server_buffer_full <= 0)
goto quit;
r = connection_enable_event_sources(c);
if (r < 0)
goto quit;
return 1;
quit:
connection_free(c);
return 0; /* ignore errors, continue serving */
}
开发者ID:floppym,项目名称:systemd,代码行数:44,代码来源:socket-proxyd.c
示例16: connection_unregister
void connection_unregister(struct btd_service *service)
{
struct btd_device *device = btd_service_get_device(service);
struct network_conn *conn = btd_service_get_user_data(service);
struct network_peer *peer = conn->peer;
uint16_t id = get_service_id(service);
DBG("%s id %u", device_get_path(device), id);
peer->connections = g_slist_remove(peer->connections, conn);
connection_free(conn);
if (peer->connections != NULL)
return;
g_dbus_unregister_interface(btd_get_dbus_connection(),
device_get_path(device),
NETWORK_PEER_INTERFACE);
}
开发者ID:DaisyPi,项目名称:sensortag,代码行数:19,代码来源:connection.c
示例17: resolve_cb
static int resolve_cb(sd_resolve_query *q, int ret, const struct addrinfo *ai, void *userdata) {
Connection *c = userdata;
assert(q);
assert(c);
if (ret != 0) {
log_error("Failed to resolve host: %s", gai_strerror(ret));
goto fail;
}
c->resolve_query = sd_resolve_query_unref(c->resolve_query);
return connection_start(c, ai->ai_addr, ai->ai_addrlen);
fail:
connection_free(c);
return 0; /* ignore errors, continue serving */
}
开发者ID:floppym,项目名称:systemd,代码行数:19,代码来源:socket-proxyd.c
示例18: connection_start
static int connection_start(Connection *c, struct sockaddr *sa, socklen_t salen) {
int r;
assert(c);
assert(sa);
assert(salen);
c->client_fd = socket(sa->sa_family, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
if (c->client_fd < 0) {
log_error_errno(errno, "Failed to get remote socket: %m");
goto fail;
}
r = connect(c->client_fd, sa, salen);
if (r < 0) {
if (errno == EINPROGRESS) {
r = sd_event_add_io(c->context->event, &c->client_event_source, c->client_fd, EPOLLOUT, connect_cb, c);
if (r < 0) {
log_error_errno(r, "Failed to add connection socket: %m");
goto fail;
}
r = sd_event_source_set_enabled(c->client_event_source, SD_EVENT_ONESHOT);
if (r < 0) {
log_error_errno(r, "Failed to enable oneshot event source: %m");
goto fail;
}
} else {
log_error_errno(errno, "Failed to connect to remote host: %m");
goto fail;
}
} else {
r = connection_complete(c);
if (r < 0)
goto fail;
}
return 0;
fail:
connection_free(c);
return 0; /* ignore errors, continue serving */
}
开发者ID:floppym,项目名称:systemd,代码行数:43,代码来源:socket-proxyd.c
示例19: connection_unregister
void connection_unregister(const char *path, uint16_t id)
{
struct network_peer *peer;
struct network_conn *nc;
peer = find_peer(peers, path);
if (!peer)
return;
nc = find_connection(peer->connections, id);
if (!nc)
return;
peer->connections = g_slist_remove(peer->connections, nc);
connection_free(nc);
if (peer->connections)
return;
g_dbus_unregister_interface(connection, path, NETWORK_PEER_INTERFACE);
}
开发者ID:ExPeacer,项目名称:6.1.A.0.452,代码行数:20,代码来源:connection.c
示例20: connection_new
int connection_new(struct instance *instance,
int server_socket,
struct connection **connectionp) {
struct connection *c;
struct linked_server *ls;
int ret;
c = calloc(1, sizeof(*c));
if (c == NULL)
return ENOMEM;
c->instance = instance;
c->background = instance->config->background;
c->autoreconnect = instance->config->autoreconnect;
INIT_LIST_HEAD(&c->client.world.items);
INIT_LIST_HEAD(&c->client.world.mobiles);
INIT_LIST_HEAD(&c->servers);
if (instance->config->client_version != NULL) {
ret = client_version_set(&c->client_version,
instance->config->client_version);
if (ret > 0)
log(2, "configured client version '%s', protocol '%s'\n",
c->client_version.packet->version,
protocol_name(c->client_version.protocol));
}
ls = connection_server_new(c, server_socket);
if (ls == NULL) {
ret = errno;
connection_free(c);
return ret;
}
connection_check(c);
*connectionp = c;
return 0;
}
开发者ID:cculianu,项目名称:uoproxy,代码行数:41,代码来源:connection.c
注:本文中的connection_free函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论