Navigation


Changeset 1190:6a1042d8075b in freeDiameter


Ignore:
Timestamp:
Jun 10, 2013, 5:44:18 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Replace FDEV_TERMINATE events with calls to fd_core_shutdown to handle the core state properly

Files:
11 edited

Legend:

Unmodified
Added
Removed
  • extensions/app_radgw/rgw_clients.c

    r1127 r1190  
    204204       
    205205        /* If we reach this part, some fatal error was encountered */
    206         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     206        CHECK_FCT_DO(fd_core_shutdown(), );
    207207        TRACE_DEBUG(FULL, "Thread terminated");
    208208        return NULL;
  • extensions/test_netemul/tne_process.c

    r1127 r1190  
    281281        TRACE_DEBUG(INFO, "A fatal error occurred in test_netemul/process thread!");
    282282        ASSERT(0);
    283         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     283        CHECK_FCT_DO(fd_core_shutdown(), );
    284284        return NULL;
    285285}
  • include/freeDiameter/libfdcore.h

    r1189 r1190  
    813813/* Daemon's codespace: 1000->1999 (1500->1999 defined in fdcore-internal.h) */
    814814enum {
    815          FDEV_TERMINATE = 1000  /* request to terminate */
    816         ,FDEV_TRIGGER           /* Trigger available for extensions. size is sizeof(int), data is int * */
     815         FDEV_TERMINATE_INT= 1000       /* request to terminate. DO NOT USE. Use fd_core_shutdown() instead. */
     816        ,FDEV_TRIGGER                   /* Trigger available for extensions. size is sizeof(int), data is int * */
    817817};
    818818
  • libfdcore/cnxctx.c

    r1186 r1190  
    611611        /* An unrecoverable error occurred, stop the daemon */
    612612        ASSERT(0);
    613         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );       
     613        CHECK_FCT_DO(fd_core_shutdown(), );     
    614614}
    615615
     
    843843                        {
    844844                                free_rcvdata(&rcv_data);
    845                                 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
    846                                 return NULL;
     845                                goto fatal;
    847846                        } );
    848847               
     
    855854fatal:
    856855        /* An unrecoverable error occurred, stop the daemon */
    857         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     856        CHECK_FCT_DO(fd_core_shutdown(), );
    858857        goto out;
    859858}
     
    908907fatal:
    909908        /* An unrecoverable error occurred, stop the daemon */
    910         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     909        CHECK_FCT_DO(fd_core_shutdown(), );
    911910        goto out;
    912911}
     
    10991098                        {
    11001099                                free_rcvdata(&rcv_data);
    1101                                 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     1100                                CHECK_FCT_DO(fd_core_shutdown(), );
    11021101                                return ret;
    11031102                        } );
  • libfdcore/core.c

    r1182 r1190  
    149149                                break;
    150150                       
    151                         case FDEV_TERMINATE:
     151                        case FDEV_TERMINATE_INT:
    152152                                goto end;
    153153                       
     
    327327        enum core_state cur_state = core_state_get();
    328328       
     329        LOG_F("Initiating freeDiameter shutdown sequence (%d)", cur_state);
     330               
    329331        if (cur_state < CORE_RUNNING) {
    330332                /* Calling application must make sure the initialization is not ongoing in a separate thread... */
     
    339341        } else if (cur_state == CORE_RUNNING) {
    340342                core_state_set(CORE_SHUTDOWN);
    341                 CHECK_FCT( fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL) );
     343                CHECK_FCT( fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE_INT, 0, NULL) );
    342344        }
    343345       
  • libfdcore/events.c

    r1127 r1190  
    105105        #define case_str( _val )\
    106106                case _val : return #_val
    107                 case_str(FDEV_TERMINATE);
     107                case_str(FDEV_TERMINATE_INT);
    108108                case_str(FDEV_TRIGGER);
    109109               
  • libfdcore/p_cnx.c

    r1187 r1190  
    314314
    315315                /* Generate a termination event */
    316                 CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     316                CHECK_FCT_DO(fd_core_shutdown(), );
    317317        }
    318318       
  • libfdcore/p_expiry.c

    r740 r1190  
    8787        TRACE_DEBUG(INFO, "An error occurred in peers module! GC thread is terminating...");
    8888        ASSERT(0);
    89         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     89        CHECK_FCT_DO(fd_core_shutdown(), );
    9090        return NULL;
    9191}
     
    139139
    140140        TRACE_DEBUG(INFO, "An error occurred in peers module! Expiry thread is terminating...");
    141         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     141        CHECK_FCT_DO(fd_core_shutdown(), );
    142142        return NULL;
    143143}
  • libfdcore/routing_dispatch.c

    r1186 r1190  
    11151115fatal_error:
    11161116        TRACE_DEBUG(INFO, "An unrecoverable error occurred, %s thread is terminating...", action_name);
    1117         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     1117        CHECK_FCT_DO(fd_core_shutdown(), );
    11181118       
    11191119end:   
  • libfdcore/sctp3436.c

    r1186 r1190  
    130130fatal:
    131131        /* An unrecoverable error occurred, stop the daemon */
    132         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     132        CHECK_FCT_DO(fd_core_shutdown(), );
    133133        goto out;
    134134}
  • libfdcore/server.c

    r1189 r1190  
    304304        /* Send error signal to the core */
    305305        LOG_F( "An error occurred in server module! Thread is terminating...");
    306         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
     306        CHECK_FCT_DO(fd_core_shutdown(), );
    307307
    308308        return NULL;
Note: See TracChangeset for help on using the changeset viewer.