示例#1
0
/*! \brief Release the connection's resources */
static void hc_delete(HttpConnection* connection) {
    //HttpServer* server = connection->server;

    log(INFO, "Http connection closed socket=%p", connection->sock);

    /* call the close callback if there is any */
    if(connection->close_callback != NULL) {
        connection->close_callback(connection->close_data);
    }

    /* delete the socket */
    sock_delete(connection->sock);

    /* erase the connection from the list of connections */
	list_erase(connection->it);

    /* free header */
    if(connection->header != NULL) {
        http_delete(connection->header);
        connection->header = NULL;
    }

    /* free memory */
    HttpConnection_free(connection);
}
示例#2
0
static int port__ctl_del(port_state_t* port_state, SOCKET sock) {
  sock_state_t* sock_state = port_find_socket(port_state, sock);
  if (sock_state == NULL)
    return -1;

  sock_delete(port_state, sock_state);

  return 0;
}
示例#3
0
static int port__ctl_add(port_state_t* port_state,
                         SOCKET sock,
                         struct epoll_event* ev) {
  sock_state_t* sock_state = sock_new(port_state, sock);
  if (sock_state == NULL)
    return -1;

  if (sock_set_event(port_state, sock_state, ev) < 0) {
    sock_delete(port_state, sock_state);
    return -1;
  }

  port__update_events_if_polling(port_state);

  return 0;
}
示例#4
0
/*! \brief Close an http server */
void hs_delete(HttpServer* server) {

    /* close ann connections */
    while(!list_empty(server->http_connections)) {
        hc_delete(list_front(server->http_connections));
    }

    /* close the server socket */
    sock_delete(server->sock);

    /* free the list */
    list_delete(server->http_connections, NULL);

    /* free the serverstruct */
    free(server);
}