Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
132:05cd37f7e007
Parent:
125:8ff4dc96ad58
Child:
135:2f4290590e51
--- a/sip.cpp	Tue Jul 21 20:03:35 2015 +0000
+++ b/sip.cpp	Tue Sep 01 17:21:11 2015 +0000
@@ -3,9 +3,9 @@
 //*[ begin ] ------------------------------------ Funcoes de uso interno ---------------------------------------------- *//
 void Sip::__init_sock__ ( void )
 {
-    sip_server.set_address ( this->server_ip , this->server_port );
+    sip_server.set_address ( this->server_ip , this -> server_port );
+    sock.bind ( this -> my_port );
     sock.set_blocking ( false, 0 );
-    sock.bind ( this->my_port );
 }
 
 void Sip::__end_sock__ ( void )
@@ -15,110 +15,32 @@
 
 void Sip::__reconnect__ ( void )
 {
-    __end_sock__(); 
-    sock.init();
-    sock.bind( this->my_port );
+    __end_sock__ (); 
+    __init_sock__ ();
 }
 //*[ end ] -------------------------------------- Funcoes de uso interno ---------------------------------------------- *//
 
   
 Sip::Sip ( const int new_ext, const uint16_t my_port )
 {
-    char inner_tmp [ 20 ];
-    
-    if ( debug_sip ) debug_msg ("[%d, %d] Building SIP", new_ext, my_port );
+    if ( debug_sip ) vz_debug ("[%d, %d] Building SIP", new_ext, my_port );
     
     this->my_ext = new_ext;
     this->my_port = my_port;
-        
-    FILE * fip = fopen ( "/qspi/serverip.txt", "r");
-    if ( fip == NULL)
-    {
-        if ( debug_sip ) debug_msg("[%d] Failed to open /qspi/serverip.txt", this->my_ext );
-        strncpy ( this->server_ip, SERVER_IP, 20 );    
-    } else {
-        char tmp [ 16 ] = "\0";
-        int read = fread ( tmp, 1, 15, fip );
-        if ( read > 0 ){
-            for ( int i = 0; i < read; i++ ) 
-                if ( tmp [ i ] == '\n' || tmp[ i ] == '\r' ){
-                     tmp [ i ] = '\0';
-                    break;
-                }
-            strcpy ( this->server_ip, tmp );
-            if ( debug_sip ) debug_msg ("[%d] ip server%s( read %d chars ), valid %d", this->my_ext, this->server_ip, read, strlen( this->server_ip )  );
-        }else{
-            if ( debug_sip ) debug_msg ("[%d] Failed to read /qspi/serverip.txt", this->my_ext );
-            strncpy ( this->server_ip, SERVER_IP, 20 );
-        }
-    }
-    if ( fip ) fclose ( fip );
-    this->server_ip [ 15 ] = '\0';
+      
+    cm -> get_server_ip ( this->server_ip );
+    this->server_port = cm -> get_server_port ();
+    cm -> get_header_ip ( this->my_ip );
     
-    FILE * sp = fopen ( "/qspi/serverport.txt", "r");
-    if ( sp == NULL )
-    {
-        if ( debug_sip ) debug_msg ("[%d] Failed to open /qspi/serverport.txt", this->my_ext );
-        this->server_port = SERVER_PORT;
-    } else {
-        if ( fread ( (void *)inner_tmp, 1, 20, sp ) > 0 )
-        {
-            server_port = atoi ( inner_tmp );
-            if ( debug_sip ) debug_msg ("[%d] server port %d", this->my_ext, this->server_port );
-        } else {
-            if ( debug_sip ) debug_msg ("F[%d] failed to read /qspi/serverport.txt", this->my_ext );
-            this->server_port = SERVER_PORT;
-        }
-    }
-    if ( sp ) fclose ( sp );
+    if ( debug_sip ) vz_debug ("[%d] port %d", this->my_ext, this->my_port );
     
-    FILE * fhip = fopen ( "/qspi/myip.txt", "r");
-    if ( fhip == NULL )
-    {
-        if ( debug_sip ) debug_msg ("[%d] Failed to open /qspi/myip.txt", this->my_ext );
-        strncpy ( this->my_ip, MY_IP, 20 );    
-    } else {
-        char tmp[ 16 ] = "\0";
-        int read = fread( tmp, 1, 15, fhip );
-        if( read > 0 ){
-            for( int i = 0; i < read; i++ ) 
-                if( tmp[ i ] == '\n' || tmp[ i ] == '\r' ){
-                    tmp[ i ] = '\0';
-                    break;
-                }
-            strcpy ( this->my_ip, tmp );
-            if ( debug_sip ) debug_msg ("[%d] ip %s( lidos %d chars ), valid %d", this->my_ext, this->my_ip, read, strlen( this->my_ip ) );
-        }else{
-            if ( debug_sip ) debug_msg ("[%d] Failed to read /qspi/myip.txt", this->my_ext );
-            strncpy ( this->my_ip, MY_IP, 20 );
-        }
-    }
-    if ( fhip ) fclose ( fhip );
-    
-    this->my_ip[ 15 ] = '\0';
-    
-    if ( debug_sip ) debug_msg ("[%d] port %d", this->my_ext, this->my_port );
-    
-    snprintf ( this->my_display, sizeof ( this->my_display ), "%i", this->my_ext );
+    snprintf ( this -> my_display, sizeof ( this -> my_display ), "%i", this -> my_ext );
     
     this->my_rtp_port = 0;
-    if ( debug_rtp ) debug_msg ("[%d] rtp port %d ", this->my_ext, this->my_rtp_port );
+    if ( debug_rtp ) vz_debug ("[%d] rtp port %d ", this->my_ext, this->my_rtp_port );
 
-    FILE * serext = fopen ( "/qspi/peerext.txt", "r");
-    if ( serext == NULL )
-    {
-        if( debug_sip ) debug_msg ("[%d] Failed to open /qspi/peerext.txt", this->my_ext );
-        this->peer_ext = PEER_EXT;
-    } else {
-        if( fread ( (void *)inner_tmp, 1, 32, serext ) > 0 ) {
-            this->peer_ext = atoi ( inner_tmp );
-            if ( debug_sip ) debug_msg("[%d] server ext %d", this->my_ext, this->peer_ext );
-        } else {
-            if ( debug_sip ) debug_msg ("Failed to read /qspi/peerext.txt" );
-            this->peer_ext = PEER_EXT;
-        }
-    }
-    if ( serext ) fclose ( serext );
+
+    this->peer_ext = cm -> get_server_ext ();
     
     strcpy( this->last_invite_tag, "" );
     strcpy( this->last_invite_callid, "");
@@ -151,14 +73,15 @@
     build_registry_package ();
     
     int send = sock.sendTo ( sip_server, buffer, strlen ( buffer ) ); // > 400
-    if ( send != strlen ( buffer ) )
+    if ( send not_eq strlen ( buffer ) )
     {
-        if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- Registry -- Sent %i of %i bytes", this->my_ext, send, strlen ( buffer ) );
+        if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- Registry -- Sent %i of %i bytes", this->my_ext, send, strlen ( buffer ) );
         __reconnect__ ();
-        miss_sip_registry_send_pkg++;
+        miss_sip_registry_send_pkg ++;
     }
 
-    if ( debug_sip ) debug_msg ("[%d %d] Registry -- Sent %i of %i bytes", this->my_ext, this->my_port, send, strlen ( buffer ) );
+    if ( debug_sip ) vz_debug ("[%d %d] Registry -- Sent %i of %i bytes", 
+                    this -> my_ext, this -> my_port, send, strlen ( buffer ) );
     
     return ( send ); 
 }
@@ -175,24 +98,24 @@
 
         build_invite_package( &cseq );
         
-        if ( debug_invite ) debug_msg ("cseq::%d", cseq );
+        if ( debug_invite ) vz_debug ("cseq::%d", cseq );
         
         if ( drop_invite_to_ast_pkg )
         {
-                debug_msg("[%d] Droped invite pkg to ast", this->my_ext );
+                vz_debug ("[%d] Droped invite pkg to ast", this->my_ext );
         }
             else
         {
             int send = sock.sendTo ( sip_server, buffer, strlen ( buffer ) );
             
-            if ( send != strlen ( buffer ) )
+            if ( send not_eq strlen ( buffer ) )
             {
-                if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- Invite", this->my_ext );
+                if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- Invite", this->my_ext );
                 __reconnect__ ();
                 miss_sip_invite_send_pkg++;
             }
          
-            if ( debug_invite || debug_reconnect ) debug_msg ("[%d] Return value for invite pkg %d", this->my_ext, send );
+            if ( debug_invite || debug_reconnect ) vz_debug ("[%d] Return value for invite pkg %d", this->my_ext, send );
         }
         
         invite_timer.stop ();
@@ -204,9 +127,9 @@
         waiting = false;
     }
     
-    if ( invite_timer.read() > INVITE_MAX_WAITING_TIME )
+    if ( invite_timer.read () > INVITE_MAX_WAITING_TIME )
     {
-        if ( debug_invite ) debug_msg ("[%d] Invite call timeout :(", this->my_ext );
+        if ( debug_invite ) vz_debug ("[%d] Invite call timeout :(", this -> my_ext );
         invite_timer.stop ();
         invite_timer.reset ();
         sip_set_status ( sip_denied );
@@ -223,12 +146,12 @@
  
 char * Sip::build_registry_package ( void )
 {
-    char branch[ SIP_MAXFIELDSIZE ];
-    char tag[ SIP_MAXFIELDSIZE ];
-    char callid[ SIP_MAXFIELDSIZE ];
-    fill_random16h( branch );
-    fill_random( tag, 18 );
-    fill_random16h( callid );
+    char branch [ SIP_MAXMSGSIZE ];
+    char tag [ SIP_MAXMSGSIZE ];
+    char callid [ SIP_MAXMSGSIZE ];
+    fill_random16h ( branch );
+    fill_random ( tag, 18 );
+    fill_random16h ( callid );
     
     snprintf( buffer, sizeof( buffer ) - 1, 
         "REGISTER sip:%s:%d SIP/2.0\r\nVia: SIP/2.0/UDP %s:%d;branch=%s\r\n"
@@ -240,13 +163,13 @@
         "Contact: %d <sip:%d@%s:%d>;expires=270\r\n"
         "User-Agent: VZtech/pabxdriver-%s\r\n"
         "Content-Length: 0\r\n"
-        "%s\r\n\r\n",
+        "%s\r\n\r\n",        
         server_ip, server_port, my_ip, my_port, branch,
         my_ext, my_ext, server_ip, server_port, tag,
         my_ext, my_ext, server_ip, server_port, 
         callid, 
         get_cseq(), 
-        my_ext, my_ext, my_ip, server_port, 
+        my_ext, my_ext, my_ip, my_port,
         SVNREV,
         SIP_ALLOW
     );
@@ -257,9 +180,9 @@
 {
     char header [ SIP_MAXMSGSIZE ];
     char body [ SIP_MAXMSGSIZE ];
-    char branch [ SIP_MAXFIELDSIZE ];
-    char tag [ SIP_MAXFIELDSIZE ];
-    char callid [ SIP_MAXFIELDSIZE ];
+    char branch [ SIP_MAXMSGSIZE ];
+    char tag [ SIP_MAXMSGSIZE ];
+    char callid [ SIP_MAXMSGSIZE ];
     char callbox_string[ CALLBOX_STRING_SIZE ];
     
     int snprintf_ret = snprintf ( callbox_string, CALLBOX_STRING_SIZE - 1, "%i", this->my_ext );
@@ -268,7 +191,7 @@
     
     if ( !retry )
     {
-        *cseq = get_cseq();
+        *cseq = get_cseq ();
         last_cseq = *cseq;
         
         fill_random16h ( branch );
@@ -293,11 +216,11 @@
         strcpy ( callid, last_invite_callid );
     }
     
-    if ( debug_invite ) debug_msg ("[%d] \r\nbranch :: %s\r\ntag :: %s\r\ncallid :: %s", this->my_ext, branch, tag, callid );
+    if ( debug_invite ) vz_debug ("[%d] \r\nbranch :: %s\r\ntag :: %s\r\ncallid :: %s", this->my_ext, branch, tag, callid );
     
-    if ( debug_rtp || debug_invite ) debug_msg ("[%d] Invite PKG rtp port ( %d )", this->my_ext, this->my_rtp_port );
+    if ( debug_rtp || debug_invite ) vz_debug ("[%d] Invite PKG rtp port ( %d )", this->my_ext, this->my_rtp_port );
 
-    snprintf( header, SIP_MAXMSGSIZE,
+    snprintf( header, sizeof ( header ) -1,
         "INVITE sip:%i@%s:%i SIP/2.0\r\n"
         "Via: SIP/2.0/UDP %s:%i;branch=%s\r\n"
         "From: %s <sip:%i@%s:%i>;tag=%s\r\n"
@@ -321,7 +244,7 @@
         SIP_ALLOW
     );
     
-    snprintf( body, SIP_MAXMSGSIZE,
+    snprintf( body, sizeof ( body ) - 1,
         "v=0\r\no=- 7377 18176 IN IP4 %s\r\n"
         "s=-\r\n"
         "c=IN IP4 %s\r\n"
@@ -347,20 +270,20 @@
     
     strcat( this->buffer, body );
     
-    if ( debug_invite ) debug_msg ("[%d] strlen( header [%d] ) | strlen( body [%d] ) | ( h + b [%d])", this->my_ext, strlen( header ),strlen( body ), strlen( header ) + strlen( body ) );
+    if ( debug_invite ) vz_debug ("[%d] strlen( header [%d] ) | strlen( body [%d] ) | ( h + b [%d])", this->my_ext, strlen( header ),strlen( body ), strlen( header ) + strlen( body ) );
     
     return( this->buffer );
 }
  
 char * Sip::build_bye_package ( void )
 {
-    char branch[SIP_MAXFIELDSIZE];
-    char tag[SIP_MAXFIELDSIZE];
-    fill_random16h(branch);
-    fill_random(tag,18);
+    char branch [ SIP_MAXMSGSIZE ];
+    char tag [ SIP_MAXMSGSIZE ];
+    fill_random16h ( branch );
+    fill_random (tag,18 );
     
     snprintf(
-        this->buffer, sizeof ( this->buffer ) - 1,
+        this -> buffer, sizeof ( this -> buffer ) - 1,
         "BYE sip:%i@%s:%i SIP/2.0\r\n"
         "Via: SIP/2.0/UDP %s:%i;branch=%s\r\n"
         "From: %i <sip:%i@%s:%i>;tag=%s\r\n"
@@ -381,87 +304,95 @@
     
     return( buffer );
 }
-char * Sip::build_ack_package ( char * buffer, const unsigned char * orig )
+char * Sip::build_ack_package ( void )
 {
-    char to[ SIP_MAXFIELDSIZE ];
-    char from[ SIP_MAXFIELDSIZE ];
-    char callid[ SIP_MAXFIELDSIZE ];
-    char via[ SIP_MAXFIELDSIZE ];
-    char branch[ SIP_MAXFIELDSIZE ];
-    char cseq[ SIP_MAXFIELDSIZE ];
-    
-    if( decode_gettag( orig, "to: ", to ) == 0) {
-        buffer[ 0 ] = 0;
-        return NULL;
+    if ( this -> buffer not_eq NULL )
+    {   
+        char to [ SIP_MAXMSGSIZE ];
+        char from [ SIP_MAXMSGSIZE ];
+        char callid [ SIP_MAXMSGSIZE ];
+        char via [ SIP_MAXMSGSIZE ];
+        char branch [ SIP_MAXMSGSIZE ];
+        char cseq [ SIP_MAXMSGSIZE ];
+        
+        if( decode_gettag( ( const unsigned char * ) this -> buffer, "to: ", to ) == 0) {
+            buffer[ 0 ] = 0;
+            return NULL;
+        }
+        if( decode_gettag( ( const unsigned char * ) this -> buffer, "from: ", from ) == 0) {
+            buffer[ 0 ] = 0;
+            return NULL;
+        }
+        if( decode_gettag( ( const unsigned char * ) this -> buffer, "call-id: ", callid ) == 0) {
+            buffer[ 0 ] = 0;
+            return NULL;
+        }
+        
+        decode_branch ( ( const unsigned char * ) this -> buffer, branch );
+        decode_cseq ( ( const unsigned char * ) this -> buffer, cseq );
+        
+        if ( strlen( via ) > 6 )
+        {
+            if ( strcasecmp ( ";rport", via + strlen ( via ) -6 ) == 0 ) {
+                via [ strlen ( via ) -6 ] = 0;
+            }
+        }
+        
+        snprintf ( buffer, sizeof ( buffer ) - 1,
+            "ACK sip:%i@%s:%i SIP/2.0\r\n"
+            "Via: SIP/2.0/UDP %s:%i;branch=%s\r\n"
+            "From: %s\r\n"
+            "To: %s\r\n"
+            "Call-ID: %s\r\n"
+            "CSeq: %s ACK\r\n"
+            "Max-Forwards: 70\r\n"
+            "Contact: %i <sip:%i@%s:%i>\r\n"
+            "User-Agent: VZtech/pabxdriver-%s\r\n"
+            "Content-Length: 0\r\n\r\n",         
+            this -> peer_ext, this -> server_ip, this -> server_port, 
+            this -> my_ip, this -> my_port, branch,
+            from, 
+            to, 
+            callid, 
+            cseq, 
+            this -> my_ext, this -> my_ext, this -> my_ip, this -> my_port,
+            SVNREV 
+        );
+        
+        return( buffer );
     }
-    if( decode_gettag( orig, "from: ", from ) == 0) {
-        buffer[ 0 ] = 0;
-        return NULL;
+        else
+    {
+        return ( NULL );    
     }
-    if( decode_gettag( orig, "call-id: ", callid ) == 0) {
+}
+
+char * Sip::build_reply_package ( void )
+{
+    char to [ SIP_MAXMSGSIZE ];
+    char from [ SIP_MAXMSGSIZE ];
+    char callid [ SIP_MAXMSGSIZE ];
+    char cseq [ SIP_MAXMSGSIZE ];
+    char via [ SIP_MAXMSGSIZE ];
+    char tag [ SIP_MAXMSGSIZE ];
+ 
+    if( decode_gettag( ( const unsigned char * ) buffer, "to: ", to ) == 0) {
         buffer[ 0 ] = 0;
         return NULL;
     }
-    decode_branch( orig, branch );
-    decode_cseq( orig, cseq );
-    
-    if( strlen( via ) > 6 ) {
-        if( strcasecmp( ";rport", via+strlen( via )-6) == 0) {
-            via[strlen(via)-6] = 0;
-        }
-    }
-    
-    
-    snprintf ( buffer, SIP_MAXMSGSIZE -1,
-        "ACK sip:%i@%s:%i SIP/2.0\r\n"
-        "Via: SIP/2.0/UDP %s:%i;branch=%s\r\n"
-        "From: %s\r\n"
-        "To: %s\r\n"
-        "Call-ID: %s\r\n"
-        "CSeq: %s ACK\r\n"
-        "Max-Forwards: 70\r\n"
-        "Contact: %i <sip:%i@%s:%i>\r\n"
-        "User-Agent: VZtech/pabxdriver-%s\r\n"
-        "Content-Length: 0\r\n\r\n",         
-        this->peer_ext, this->server_ip, this->server_port, 
-        this->my_ip, this->my_port, branch,
-        from, 
-        to, 
-        callid, 
-        cseq, 
-        this->my_ext, this->my_ext, this->my_ip, this->my_port,
-        SVNREV 
-    );
-    
-    return( buffer );
-}
-
-char * Sip::build_reply_package ( char * buffer, const unsigned char * orig )
-{
-    char to[ SIP_MAXFIELDSIZE ];
-    char from[ SIP_MAXFIELDSIZE ];
-    char callid[ SIP_MAXFIELDSIZE ];
-    char cseq[ SIP_MAXFIELDSIZE ];
-    char via[ SIP_MAXFIELDSIZE ];
-    char tag[ SIP_MAXFIELDSIZE ];
- 
-    if( decode_gettag( orig, "to: ", to ) == 0) {
+    if( decode_gettag( ( const unsigned char * ) buffer, "from: ", from ) == 0) {
         buffer[ 0 ] = 0;
         return NULL;
     }
-    if( decode_gettag( orig, "from: ", from ) == 0) {
+    if( decode_gettag( ( const unsigned char * ) buffer, "call-id: ", callid ) == 0 ) {
         buffer[ 0 ] = 0;
         return NULL;
     }
-    if( decode_gettag( orig, "call-id: ", callid ) == 0 ) {
+    if( decode_gettag( ( const unsigned char * ) buffer, "cseq: ", cseq) == 0 ) {
         buffer[ 0 ] = 0;
         return NULL;
     }
-    if( decode_gettag( orig, "cseq: ", cseq) == 0 ) {
-        buffer[ 0 ] = 0;
-        return NULL;
-    }
-    if( decode_gettag( orig, "via: ", via) == 0 ) {
+    if( decode_gettag( ( const unsigned char * ) buffer, "via: ", via) == 0 ) {
         buffer[ 0 ] = 0;
         return NULL;
     }
@@ -475,7 +406,7 @@
     fill_random ( tag, 18 );
     
     snprintf(
-        buffer, SIP_MAXMSGSIZE -1,
+        buffer, sizeof ( buffer ) - 1,
         "SIP/2.0 200 OK\r\n"    
         "To: %s;tag=%s\r\n"
         "From: %s\r\n"
@@ -536,7 +467,7 @@
  
 char * Sip::decode_cseq ( const unsigned char * package, char * cseq )
 {
-    char pkg[ SIP_MAXMSGSIZE ], cs[ SIP_MAXMSGSIZE ];
+    char pkg [ SIP_MAXMSGSIZE ], cs [ SIP_MAXMSGSIZE ];
     
     if( decode_gettag ( package, "cseq: ", pkg ) != 0)
     {
@@ -553,7 +484,7 @@
  
 char * Sip::decode_branch ( const unsigned char * package, char * branch )
 {
-    char pkg[ SIP_MAXMSGSIZE ];
+    char pkg [ SIP_MAXMSGSIZE ];
     
     if ( decode_gettag ( package, "branch=", pkg ) != 0 )
     {
@@ -628,15 +559,18 @@
 
 void Sip::send_bye ( void )
 {
-    int send = sock.sendTo( sip_server, build_bye_package (), strlen( this->buffer ) );
+    build_bye_package ();
     
-    if( debug_sip ) debug_msg( "[%d] sizeof( bye pkg ) :: %d", this->my_ext, strlen( this->buffer ) );
+    int send = sock.sendTo ( sip_server, this -> buffer, strlen( this -> buffer ) );
     
-    if( send != strlen( this->buffer ) )
+    // antigo if ( debug_sip ) vz_debug ( "[%d] sizeof( bye pkg ) :: %d", this -> my_ext, strlen ( this -> buffer ) );
+    if ( debug_invite ) vz_debug ( "[%d] sizeof( bye pkg ) :: %d", this -> my_ext, strlen ( this -> buffer ) );
+    
+    if ( send not_eq strlen ( this->buffer ) )
     {
-        if( debug_reconnect ) debug_msg("[%d] Reconnect SIP -- BYE, %d, %d", this->my_ext, send, strlen( this->buffer ) );
-        __reconnect__();
-        miss_sip_bye_send_pkg++;
+        if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- BYE, %d, %d", this -> my_ext, send, strlen ( this -> buffer ) );
+        __reconnect__ ();
+        miss_sip_bye_send_pkg ++;
     }
 }
 
@@ -656,9 +590,9 @@
     
     if ( length == -1 )
     {
-        if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- UDP Incomming", get_ext () );
-        __reconnect__();
-        miss_sip_inc_pkg++;
+        if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- UDP Incomming", get_ext () );
+        __reconnect__ ();
+        miss_sip_inc_pkg ++;
     }
     
     if ( length > 0 )
@@ -676,13 +610,16 @@
         { 
             if ( sip_response == 200 ){ // Ok    
                 char *ref = strstr( buffer, "audio" );
-                if ( debug_invite ) debug_msg("[%d] udp_incomming_pkg -- ok", this->my_ext );
-                if ( ref != NULL ){
+                
+                if ( debug_invite ) vz_debug ("[%d] udp_incomming_pkg -- ok", this->my_ext );
+                
+                if ( ref != NULL )
+                {
                     if ( drop_this_amount_of_ack_to_ast ) drop_this_amount_of_ack_to_ast--;
                         
                     if ( drop_this_amount_of_ack_to_ast )
                     {
-                        debug_msg ("[%d] Droped ok pkg received from ast (%d)", this->my_ext, drop_this_amount_of_ack_to_ast );
+                        vz_debug ("[%d] Droped ok pkg received from ast (%d)", this->my_ext, drop_this_amount_of_ack_to_ast );
                         return -71;    
                     }
                                         
@@ -690,31 +627,31 @@
                     ref = strtok( ref, " ");
                     if ( call == NULL ){
                         call = new VZ_call ( this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ) );
-                        if ( debug_rtp ) debug_msg ("[%d] Ok new call ( %d, %d, %d, %d ( %s ) ) ", this->my_ext, this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ), ref );
+                        if ( debug_rtp ) vz_debug ("[%d] Ok new call ( %d, %d, %d, %d ( %s ) ) ", this->my_ext, this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ), ref );
                         if ( call == NULL ) memory_is_over = true;
                     }
-                    char ans[ SIP_MAXMSGSIZE ];
-                    build_ack_package( ans, ( unsigned char *)buffer );
+            
+                    build_ack_package ();
                     
                     int send = 0;
                     
                     if ( drop_ack_pkg )
                     {
-                        debug_msg("[%d] Droped ack pkt to ast", this->my_ext );
+                        vz_debug ("[%d] Droped ack pkt to ast", this->my_ext );
                     }
                         else
                     {
-                        send = sock.sendTo( sip_server, ans, strlen( ans ) );
+                        send = sock.sendTo ( sip_server, this -> buffer, strlen ( this -> buffer ) );
                     
-                        if ( send != strlen( ans ) )
+                        if ( send not_eq strlen( this -> buffer ) )
                         {
-                            if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- Ok -- Call mode on", this->my_ext );
-                            __reconnect__();
-                            miss_sip_ok_send_pkg++;
+                            if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- Ok -- Call mode on", this->my_ext );
+                            __reconnect__ ();
+                            miss_sip_ok_send_pkg ++;
                         }
                     }
                     
-                    if ( debug_invite ) debug_msg ("[%d] Call alocada -- sizeof( ack ) :: %d - strlen( ans ):: %d", this->my_ext, send, strlen( ans ) );
+                    if ( debug_invite ) vz_debug ("[%d] Call alocada -- sizeof( ack ) :: %d - strlen( this -> buffer ):: %d", this->my_ext, send, strlen( this -> buffer ) );
                     sip_set_status ( sip_on_call );
                 }
             }
@@ -724,10 +661,10 @@
             if ( sip_response >= 400 && sip_response < 700 )
             {
                 if ( debug_invite ) { 
-                    buffer[ 11 ] = 0; 
-                    if ( debug_invite ) debug_msg ("[%d] Busy Here :: %s", this->my_ext, buffer + 8 );
+                    buffer [ 11 ] = 0; 
+                    if ( debug_invite ) vz_debug ("[%d] Busy Here :: %s", this -> my_ext, buffer + 8 );
                 }
-                send_bye();
+                send_bye ();
                 sip_set_status ( sip_busy );
                 return ( NULL );  
             }
@@ -741,7 +678,7 @@
                     if ( call == NULL )
                     {
                         this->call = new VZ_call ( this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ) );
-                        if ( debug_rtp ) debug_msg ("[%d] Session in Progress ( %d, %d, %d, %d ( %s ) ) ",this->my_ext, this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ), ref );
+                        if ( debug_rtp ) vz_debug ("[%d] Session in Progress ( %d, %d, %d, %d ( %s ) ) ",this->my_ext, this->my_ext, this->my_rtp_port, this->peer_ext, atoi( ref ), ref );
                         if ( call == NULL ) memory_is_over = true;
                     }
                     waiting = true;
@@ -751,14 +688,14 @@
         
         if ( status == sip_trying ){
             if ( sip_response == 180 ){
-                if ( debug_invite ) debug_msg ("[%d] ringing", this->my_ext );
+                if ( debug_invite ) vz_debug ("[%d] ringing", this->my_ext );
                 sip_set_status ( sip_ringing );
             }
         }
         
         if ( status == sip_waiting_trying ){
             if ( sip_response == 100 ){
-                if ( debug_invite ) debug_msg ("[%d] trying", this->my_ext )
+                if ( debug_invite ) vz_debug ("[%d] trying", this->my_ext )
                 sip_set_status ( sip_trying );
             }
         }
@@ -766,20 +703,25 @@
         if ( status == sip_on_call )
         {
             if ( !( strncasecmp( buffer, "bye ", 4 ) ) )
-            {
-                char ans[ 2000 ];
-                build_reply_package ( ans, ( unsigned char * ) buffer );
+            {   
+                build_reply_package ();
                 
-                int send = sock.sendTo ( sip_server, ans, strlen ( ans ) );
-                if ( send != strlen( ans ) )
+                int send = sock.sendTo ( sip_server, this -> buffer, strlen ( this -> buffer ) );
+                if ( send not_eq strlen ( this -> buffer ) )
                 {
-                    if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- RCV BYE from * -- ( expected, realized ) ( %d, %d )", this->my_ext, strlen ( ans ), send );
+                    if ( debug_reconnect ) vz_debug (""
+                        "[%d] Reconnect SIP -- RCV BYE from * -- ( expected, realized ) ( %d, %d )", 
+                        this->my_ext, strlen ( this -> buffer ), send 
+                    );
+                    
                     __reconnect__ ();
-                    miss_sip_rcv_bye_send_pkg++;
+                    miss_sip_rcv_bye_send_pkg ++;
                 }
                 
-                if ( debug_invite ) debug_msg ("[%d] Bye request received from * - sizeof( bye reply pkg ) :: %d", this->my_ext, strlen ( ans ) );
-                
+                if ( debug_invite ) vz_debug (""
+                    "[%d] Bye request received from * - sizeof ( bye reply pkg ) :: %d", 
+                    this -> my_ext, strlen ( this -> buffer ) 
+                );
                 
                 set_sip_rtp_port ( 0 );
                 
@@ -802,37 +744,37 @@
 void Sip::set_sip_rtp_port ( const int new_my_rtp_port )
 { 
     this->my_rtp_port = new_my_rtp_port; 
-    if ( debug_rtp ) debug_msg ( "[%d] this->my_rtp_port ( %d ) = new_my_rtp_port( %d )", this->my_ext, this->my_rtp_port, new_my_rtp_port );
+    if ( debug_rtp ) vz_debug ( "[%d] this->my_rtp_port ( %d ) = new_my_rtp_port( %d )", this->my_ext, this->my_rtp_port, new_my_rtp_port );
 }
 
 int Sip::print_yourself ( void )
 {
-    send_msg ("");
-    send_msg ("Values ::\r\n");
-    send_msg ("server_ip :: %s", server_ip );
-    send_msg ("server_port :: %d", server_port );
-    send_msg ("my_ip :: %s", my_ip );
-    send_msg ("my_port :: %d", my_port );
-    send_msg ("my_ext :: %d", my_ext );
-    send_msg ("my_rtp_port :: %d", my_rtp_port );
-    send_msg ("my_display :: %s", my_display );
-    send_msg ("peer_ext :: %d", peer_ext );
-    send_msg ("fill_random_aux :: %s", fill_random_aux );
-    send_msg ("last_invite_tag :: %s", last_invite_tag );
-    send_msg ("last_invite_callid :: %s", last_invite_callid );
-    send_msg ("SVNREV :: %s", SVNREV );
-    send_msg ("char buffer[ 1024 ] :: %p", ( void * ) buffer );
+    vz_printf ("\r\n");
+    vz_printf ("Values ::\r\n");
+    vz_printf ("server_ip :: %s", server_ip );
+    vz_printf ("server_port :: %d", server_port );
+    vz_printf ("my_ip :: %s", my_ip );
+    vz_printf ("my_port :: %d", my_port );
+    vz_printf ("my_ext :: %d", my_ext );
+    vz_printf ("my_rtp_port :: %d", my_rtp_port );
+    vz_printf ("my_display :: %s", my_display );
+    vz_printf ("peer_ext :: %d", peer_ext );
+    vz_printf ("fill_random_aux :: %s", fill_random_aux );
+    vz_printf ("last_invite_tag :: %s", last_invite_tag );
+    vz_printf ("last_invite_callid :: %s", last_invite_callid );
+    vz_printf ("SVNREV :: %s", SVNREV );
+    vz_printf ("char buffer[ 1024 ] :: %p", ( void * ) buffer );
     
     //FIXME esse tipo de tag existe como metalinguagem ???
     //TOTHINK o que fazer pra entender melhor o estado dos sockets
-    send_msg ("UDPSocket sock :: %p", ( void * ) &sock );
-    send_msg ("Endpoint sip_server :: %p", ( void * ) &sip_server );
+    vz_printf ("UDPSocket sock :: %p", ( void * ) &sock );
+    vz_printf ("Endpoint sip_server :: %p", ( void * ) &sip_server );
     
-    send_msg ("call :: %p", ( void * ) call );
-    send_msg ("invite_timer :: %d", ( int ) invite_timer.read () );
-    send_msg ("waiting ::  %s", ( waiting ) ? "true" : "false" );
-    send_msg ("listen_SIP_server_return :: %d", listen_SIP_server_return );
-    send_msg ("");
+    vz_printf ("call :: %p", ( void * ) call );
+    vz_printf ("invite_timer :: %d", ( int ) invite_timer.read () );
+    vz_printf ("waiting ::  %s", ( waiting ) ? "true" : "false" );
+    vz_printf ("listen_SIP_server_return :: %d", listen_SIP_server_return );
+    vz_printf ("\r\n");
 
     return ( sizeof( Sip ) );    
 }
@@ -848,28 +790,43 @@
 
     build_invite_package ( &cseq, true );
     
-    if ( debug_invite ) debug_msg ("cseq::%d", cseq );
+    if ( debug_invite ) vz_debug ("cseq::%d", cseq );
     
     int send = 0;
     
     if ( drop_invite_to_ast_pkg )
     {
-            debug_msg ("[%d] Droped invite pkg to ast", this->my_ext );
+            vz_debug ("[%d] Droped invite pkg to ast", this->my_ext );
     }
         else
     {
         
         send = sock.sendTo ( sip_server, buffer, strlen ( buffer ) );
         
-        if ( send != strlen( buffer ) )
+        if ( send not_eq strlen ( buffer ) )
         {
-            if ( debug_reconnect ) debug_msg ("[%d] Reconnect SIP -- Invite", this->my_ext );
+            if ( debug_reconnect ) vz_debug ("[%d] Reconnect SIP -- Invite", this->my_ext );
             __reconnect__ ();
-            miss_sip_invite_send_pkg++;
+            miss_sip_invite_send_pkg ++;
         }
      
-        if ( debug_invite || debug_reconnect ) debug_msg ("[%d] Return value for invite pkg %d", this->my_ext, send );
+        if ( debug_invite || debug_reconnect ) vz_debug ("[%d] Return value for invite pkg %d", this->my_ext, send );
     }
     
     return ( send );
+}
+
+void Sip::update ( void )
+{
+    cm -> get_server_ip ( this -> server_ip );
+    
+    this -> server_port = cm -> get_server_port ();
+    
+    cm -> get_header_ip ( this -> my_ip );
+    
+    this -> peer_ext = cm -> get_server_ext ();
+    
+    sip_server.set_address ( this -> server_ip , this -> server_port );
+    
+    __reconnect__ ();
 }
\ No newline at end of file