voltando a versao de n aberturas e fechamentos de sockets data 19/09

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed EALib

Fork of header_main_publish by VZTECH

Revision:
10:22da1a0ac1e1
Parent:
9:ffa64f38ef9c
Child:
12:07fd716e0f35
--- a/utils.cpp	Mon Sep 15 17:51:46 2014 +0000
+++ b/utils.cpp	Mon Sep 15 20:55:48 2014 +0000
@@ -67,6 +67,7 @@
 }
 
 void registry_aging( Vector * v_cb, uint8_t * data, uint8_t * write_buffer ){
+    //debug_msg("");
     Call_Box * cb = NULL;
     if( v_cb && data && write_buffer ){
         int tam = v_cb->size();
@@ -134,6 +135,7 @@
 }
 
 int sip_manager( Vector * v_cb, Vector * v_call, uint8_t * write_buffer ){
+    //debug_msg("");
     static int index = 0;
     if( v_cb && write_buffer ){
         if( v_cb->size() > 0 ){
@@ -147,7 +149,8 @@
         */
         int returned_value = 0;
         
-        if( cb->status == cb_on_call || cb->status == cb_idle ) returned_value = cb->listen_SIP_server();
+        //if( cb->status == cb_on_call || cb->status == cb_idle ) returned_value = cb->listen_SIP_server();
+        if( cb->status == cb_on_call ) returned_value = cb->listen_SIP_server();
         
         index++;
         return( returned_value );
@@ -158,6 +161,7 @@
 
 /* remove calls por timeout */
 void call_manager( Vector * v_call, Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Timeslice * ts ){
+    //debug_msg("");
     for( register int i = 0; i < v_call->size(); i++ ){
         VZ_call * call = ( VZ_call * )v_call->get_element( i );
         if( call->is_timeout() || call->is_timetofinish() ){
@@ -172,7 +176,7 @@
                 __send_to_cb__( __build_cb_package__( cb->get_ext(), cb->get_port(), __CB_BYE__, 
                     ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                 cb->send_bye();
-                set_status( cb->sip->status, sip_idle );
+                if( cb->sip ) set_status( cb->sip->status, sip_idle );
             }
             delete( call );    
         }