void end_channel_now(struct bufferevent *bev, hoststate_t* state) { log_trace("end-channel-now", "%s: Ending channel", state->ip_address_str); fill_DBuffer_all(state->ctrlBev, state, &state->ctrlDBuffer); if (state->dataBev != NULL) { fill_DBuffer_all(state->dataBev, state, &state->dataDBuffer); if (state->dataUsingSec) { SSL_set_shutdown(state->dataSec, SSL_RECEIVED_SHUTDOWN); SSL_shutdown(state->dataSec); state->dataSec = NULL; } bufferevent_free(state->dataBev); state->dataBev = NULL; log_debug( "end-channel-now", "%s: Force closed data channel", state->ip_address_str ); } writeCtrlTrailer(state); DBuffer_destroy(&state->ctrlDBuffer); DBuffer_destroy(&state->dataDBuffer); DBuffer_destroy(&state->itemDBuffer); str_queue_destroy(&state->dirQueue); gconfig.open_connections--; gconfig.countComplete++; delete_all_timers(state); bufferevent_free(state->ctrlBev); state->ctrlBev = NULL; state->hostIsFinished = true; }
/// @brief Setup all timers tasksi and enable interrupts /// /// @see clock_task() /// @see: timer_hal.c for hardware dependent interface // /// @return void MEMSPACE void init_timers() { printf("Timers init called\n"); if(!timers_configured) { install_timers_isr(); timers_configured = 1; timers_enabled = 0; printf("Timers configured\n"); } delete_all_timers(); clock_clear(); printf("Clock Init\n"); /// See time.c if(set_timers(clock_task,1) == -1) printf("Clock task init failed\n"); printf("Clock Installed\n"); enable_timers(); printf("Timers enabled\n"); }