Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv20368/channels

Modified Files:
        chan_iax2.c 
Log Message:
use enum's for iax user/peer flags, and for pvt state


Index: chan_iax2.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax2.c,v
retrieving revision 1.369
retrieving revision 1.370
diff -u -d -r1.369 -r1.370
--- chan_iax2.c 4 Nov 2005 18:40:35 -0000       1.369
+++ chan_iax2.c 6 Nov 2005 05:52:26 -0000       1.370
@@ -224,38 +224,42 @@
 
 static pthread_t netthreadid = AST_PTHREADT_NULL;
 
-#define IAX_STATE_STARTED              (1 << 0)
-#define IAX_STATE_AUTHENTICATED        (1 << 1)
-#define IAX_STATE_TBD                  (1 << 2)
+enum {
+       IAX_STATE_STARTED =             (1 << 0),
+       IAX_STATE_AUTHENTICATED =       (1 << 1),
+       IAX_STATE_TBD =                 (1 << 2)
+} iax2_state;
 
 struct iax2_context {
        char context[AST_MAX_CONTEXT];
        struct iax2_context *next;
 };
 
-#define IAX_HASCALLERID                (1 << 0)        /*!< CallerID has been 
specified */
-#define IAX_DELME              (1 << 1)        /*!< Needs to be deleted */
-#define IAX_TEMPONLY           (1 << 2)        /*!< Temporary (realtime) */
-#define IAX_TRUNK              (1 << 3)        /*!< Treat as a trunk */
-#define IAX_NOTRANSFER         (1 << 4)        /*!< Don't native bridge */
-#define IAX_USEJITTERBUF       (1 << 5)        /*!< Use jitter buffer */
-#define IAX_DYNAMIC            (1 << 6)        /*!< dynamic peer */
-#define IAX_SENDANI            (1 << 7)        /*!< Send ANI along with 
CallerID */
-#define IAX_MESSAGEDETAIL      (1 << 8)        /*!< Show exact numbers */
-#define IAX_ALREADYGONE                (1 << 9)        /*!< Already 
disconnected */
-#define IAX_PROVISION          (1 << 10)       /*!< This is a provisioning 
request */
-#define IAX_QUELCH             (1 << 11)       /*!< Whether or not we quelch 
audio */
-#define IAX_ENCRYPTED          (1 << 12)       /*!< Whether we should assume 
encrypted tx/rx */
-#define IAX_KEYPOPULATED       (1 << 13)       /*!< Whether we have a key 
populated */
-#define IAX_CODEC_USER_FIRST   (1 << 14)       /*!< are we willing to let the 
other guy choose the codec? */
-#define IAX_CODEC_NOPREFS      (1 << 15)       /*!< Force old behaviour by 
turning off prefs */
-#define IAX_CODEC_NOCAP        (1 << 16)       /*!< only consider requested 
format and ignore capabilities*/
-#define IAX_RTCACHEFRIENDS     (1 << 17)       /*!< let realtime stay till 
your reload */
-#define IAX_RTUPDATE           (1 << 18)       /*!< Send a realtime update */
-#define IAX_RTAUTOCLEAR        (1 << 19)       /*!< erase me on expire */ 
-#define IAX_FORCEJITTERBUF     (1 << 20)       /*!< Force jitterbuffer, even 
when bridged to a channel that can take jitter */ 
-#define IAX_RTIGNOREREGEXPIRE  (1 << 21)       /*!< When using realtime, 
ignore registration expiration */
-#define IAX_TRUNKTIMESTAMPS    (1 << 22)       /*!< Send trunk timestamps */
+enum {
+       IAX_HASCALLERID =       (1 << 0),       /*!< CallerID has been 
specified */
+       IAX_DELME =             (1 << 1),       /*!< Needs to be deleted */
+       IAX_TEMPONLY =          (1 << 2),       /*!< Temporary (realtime) */
+       IAX_TRUNK =             (1 << 3),       /*!< Treat as a trunk */
+       IAX_NOTRANSFER =        (1 << 4),       /*!< Don't native bridge */
+       IAX_USEJITTERBUF =      (1 << 5),       /*!< Use jitter buffer */
+       IAX_DYNAMIC =           (1 << 6),       /*!< dynamic peer */
+       IAX_SENDANI =           (1 << 7),       /*!< Send ANI along with 
CallerID */
+       IAX_MESSAGEDETAIL =     (1 << 8),       /*!< Show exact numbers */
+       IAX_ALREADYGONE =       (1 << 9),       /*!< Already disconnected */
+       IAX_PROVISION =         (1 << 10),      /*!< This is a provisioning 
request */
+       IAX_QUELCH =            (1 << 11),      /*!< Whether or not we quelch 
audio */
+       IAX_ENCRYPTED =         (1 << 12),      /*!< Whether we should assume 
encrypted tx/rx */
+       IAX_KEYPOPULATED =      (1 << 13),      /*!< Whether we have a key 
populated */
+       IAX_CODEC_USER_FIRST =  (1 << 14),      /*!< are we willing to let the 
other guy choose the codec? */
+       IAX_CODEC_NOPREFS =     (1 << 15),      /*!< Force old behaviour by 
turning off prefs */
+       IAX_CODEC_NOCAP =       (1 << 16),      /*!< only consider requested 
format and ignore capabilities*/
+       IAX_RTCACHEFRIENDS =    (1 << 17),      /*!< let realtime stay till 
your reload */
+       IAX_RTUPDATE =          (1 << 18),      /*!< Send a realtime update */
+       IAX_RTAUTOCLEAR =       (1 << 19),      /*!< erase me on expire */ 
+       IAX_FORCEJITTERBUF =    (1 << 20),      /*!< Force jitterbuffer, even 
when bridged to a channel that can take jitter */ 
+       IAX_RTIGNOREREGEXPIRE = (1 << 21),      /*!< When using realtime, 
ignore registration expiration */
+       IAX_TRUNKTIMESTAMPS =   (1 << 22)       /*!< Send trunk timestamps */
+} iax2_flags;
 
 static int global_rtautoclear = 120;
 
@@ -489,7 +493,7 @@
        /*! Owner if we have one */
        struct ast_channel *owner;
        /*! What's our state? */
-       int state;
+       struct ast_flags state;
        /*! Expiry (optional) */
        int expiry;
        /*! Next outgoing sequence number */
@@ -4600,7 +4604,7 @@
                                res = 0;
                        else if ((f->frametype == AST_FRAME_VOICE) && 
ast_test_flag(iaxs[callno], IAX_QUELCH))
                                res = 0;
-                       else if (!(iaxs[callno]->state & IAX_STATE_STARTED))
+                       else if (!ast_test_flag(&iaxs[callno]->state, 
IAX_STATE_STARTED))
                                res = 0;
                        else
                        /* Simple, just queue for transmission */
@@ -4928,7 +4932,7 @@
        int res = -1; 
        int x;
        
-       if (!(p->state & IAX_STATE_AUTHENTICATED))
+       if (!ast_test_flag(&p->state, IAX_STATE_AUTHENTICATED))
                return res;
        if (ies->password)
                ast_copy_string(secret, ies->password, sizeof(secret));
@@ -4995,7 +4999,7 @@
        int x;
        int expire = 0;
 
-       iaxs[callno]->state &= ~IAX_STATE_AUTHENTICATED;
+       ast_clear_flag(&iaxs[callno]->state, IAX_STATE_AUTHENTICATED);
        iaxs[callno]->peer[0] = '\0';
        if (ies->username)
                ast_copy_string(peer, ies->username, sizeof(peer));
@@ -5053,7 +5057,7 @@
                        while(keyn) {
                                key = ast_key_get(keyn, AST_KEY_PUBLIC);
                                if (key && !ast_check_signature(key, 
iaxs[callno]->challenge, rsasecret)) {
-                                       iaxs[callno]->state |= 
IAX_STATE_AUTHENTICATED;
+                                       ast_set_flag(&iaxs[callno]->state, 
IAX_STATE_AUTHENTICATED);
                                        break;
                                } else if (!key) 
                                        ast_log(LOG_WARNING, "requested inkey 
'%s' does not exist\n", keyn);
@@ -5082,7 +5086,7 @@
                                destroy_peer(p);
                        return -1;
                } else
-                       iaxs[callno]->state |= IAX_STATE_AUTHENTICATED;
+                       ast_set_flag(&iaxs[callno]->state, 
IAX_STATE_AUTHENTICATED);
        } else if (!ast_strlen_zero(md5secret) && (p->authmethods & 
IAX_AUTH_MD5) && !ast_strlen_zero(iaxs[callno]->challenge)) {
                struct MD5Context md5;
                unsigned char digest[16];
@@ -5101,7 +5105,7 @@
                                break;
                }
                if (tmppw) {
-                       iaxs[callno]->state |= IAX_STATE_AUTHENTICATED;
+                       ast_set_flag(&iaxs[callno]->state, 
IAX_STATE_AUTHENTICATED);
                } else {
                        if (authdebug)
                                ast_log(LOG_NOTICE, "Host %s failed MD5 
authentication for '%s' (%s != %s)\n", ast_inet_ntoa(iabuf, sizeof(iabuf), 
sin->sin_addr), p->name, requeststr, md5secret);
@@ -5630,14 +5634,14 @@
                        ast_db_put("IAX/Registry", p->name, data);
                        if  (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3 "Registered IAX2 
'%s' (%s) at %s:%d\n", p->name, 
-                                           iaxs[callno]->state & 
IAX_STATE_AUTHENTICATED ? "AUTHENTICATED" : "UNAUTHENTICATED", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port));
+                                           ast_test_flag(&iaxs[callno]->state, 
IAX_STATE_AUTHENTICATED) ? "AUTHENTICATED" : "UNAUTHENTICATED", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port));
                        manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: 
IAX2/%s\r\nPeerStatus: Registered\r\n", p->name);
                        register_peer_exten(p, 1);
                        ast_device_state_changed("IAX2/%s", p->name); /* 
Activate notification */
                } else if (!ast_test_flag(p, IAX_TEMPONLY)) {
                        if  (option_verbose > 2)
                                ast_verbose(VERBOSE_PREFIX_3 "Unregistered IAX2 
'%s' (%s)\n", p->name, 
-                                           iaxs[callno]->state & 
IAX_STATE_AUTHENTICATED ? "AUTHENTICATED" : "UNAUTHENTICATED");
+                                           ast_test_flag(&iaxs[callno]->state, 
IAX_STATE_AUTHENTICATED) ? "AUTHENTICATED" : "UNAUTHENTICATED");
                        manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: 
IAX2/%s\r\nPeerStatus: Unregistered\r\n", p->name);
                        register_peer_exten(p, 0);
                        ast_db_del("IAX/Registry", p->name);
@@ -6359,7 +6363,7 @@
                                                                } else
                                                                        fr.ts = 
fix_peerts(&rxtrunktime, fr.callno, ts);
                                                                /* Don't pass 
any packets until we're started */
-                                                               if 
((iaxs[fr.callno]->state & IAX_STATE_STARTED)) {
+                                                               if 
(ast_test_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED)) {
                                                                        /* 
Common things */
                                                                        f.src = 
"IAX2";
                                                                        
f.mallocd = 0;
@@ -6691,7 +6695,7 @@
                                /* Do nothing */
                                break;
                        case IAX_COMMAND_QUELCH:
-                               if (iaxs[fr.callno]->state & IAX_STATE_STARTED) 
{
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED)) {
                                        /* Generate Manager Hold event, if 
necessary*/
                                        if (iaxs[fr.callno]->owner) {
                                                manager_event(EVENT_FLAG_CALL, 
"Hold",
@@ -6709,8 +6713,8 @@
                                        }
                                }
                                break;
-                       case IAX_COMMAND_UNQUELCH:                       
-                               if (iaxs[fr.callno]->state & IAX_STATE_STARTED) 
{
+                       case IAX_COMMAND_UNQUELCH:
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED)) {
                                        /* Generate Manager Unhold event, if 
necessary*/
                                        if (iaxs[fr.callno]->owner && 
ast_test_flag(iaxs[fr.callno], IAX_QUELCH)) {
                                                manager_event(EVENT_FLAG_CALL, 
"Unhold",
@@ -6744,7 +6748,7 @@
                                break;
                        case IAX_COMMAND_NEW:
                                /* Ignore if it's already up */
-                               if (iaxs[fr.callno]->state & (IAX_STATE_STARTED 
| IAX_STATE_TBD))
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED | IAX_STATE_TBD))
                                        break;
                                if (ies.provverpres && ies.serviceident && 
sin.sin_addr.s_addr)
                                        check_provisioning(&sin, fd, 
ies.serviceident, ies.provver);
@@ -6870,7 +6874,7 @@
                                                        
iax_ie_append_int(&ied1, IAX_IE_FORMAT, format);
                                                        
send_command(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACCEPT, 0, ied1.buf, 
ied1.pos, -1);
                                                        if 
(strcmp(iaxs[fr.callno]->exten, "TBD")) {
-                                                               
iaxs[fr.callno]->state |= IAX_STATE_STARTED;
+                                                               
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED);
                                                                if 
(option_verbose > 2) 
                                                                        
ast_verbose(VERBOSE_PREFIX_3 "Accepting UNAUTHENTICATED call from %s:\n"
                                                                                
                "%srequested format = %s,\n"
@@ -6893,7 +6897,7 @@
                                                                if(!(c = 
ast_iax2_new(fr.callno, AST_STATE_RING, format)))
                                                                        
iax2_destroy_nolock(fr.callno);
                                                        } else {
-                                                               
iaxs[fr.callno]->state |= IAX_STATE_TBD;
+                                                               
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_TBD);
                                                                /* If this is a 
TBD call, we're ready but now what...  */
                                                                if 
(option_verbose > 2)
                                                                        
ast_verbose(VERBOSE_PREFIX_3 "Accepted unauthenticated TBD call from %s\n", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr));
@@ -6907,12 +6911,12 @@
                                else
                                        iaxs[fr.callno]->encmethods = 0;
                                authenticate_request(iaxs[fr.callno]);
-                               iaxs[fr.callno]->state |= 
IAX_STATE_AUTHENTICATED;
+                               ast_set_flag(&iaxs[fr.callno]->state, 
IAX_STATE_AUTHENTICATED);
                                break;
                        case IAX_COMMAND_DPREQ:
                                /* Request status in the dialplan */
-                               if ((iaxs[fr.callno]->state & IAX_STATE_TBD) && 
-                                       !(iaxs[fr.callno]->state & 
IAX_STATE_STARTED) && ies.called_number) {
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_TBD) &&
+                                       !ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED) && ies.called_number) {
                                        if (iaxcompat) {
                                                /* Spawn a thread for the 
lookup */
                                                spawn_dp_lookup(fr.callno, 
iaxs[fr.callno]->context, ies.called_number, iaxs[fr.callno]->cid_num);
@@ -6978,7 +6982,7 @@
                                break;
                        case IAX_COMMAND_ACCEPT:
                                /* Ignore if call is already up or needs 
authentication or is a TBD */
-                               if (iaxs[fr.callno]->state & (IAX_STATE_STARTED 
| IAX_STATE_TBD | IAX_STATE_AUTHENTICATED))
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED | IAX_STATE_TBD | IAX_STATE_AUTHENTICATED))
                                        break;
                                if (ast_test_flag(iaxs[fr.callno], 
IAX_PROVISION)) {
                                        /* Send ack immediately, before we 
destroy */
@@ -7004,7 +7008,7 @@
                                        if (authdebug)
                                                ast_log(LOG_NOTICE, "Rejected 
call to %s, format 0x%x incompatible with our capability 0x%x.\n", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr), iaxs[fr.callno]->peerformat, 
iaxs[fr.callno]->capability);
                                } else {
-                                       iaxs[fr.callno]->state |= 
IAX_STATE_STARTED;
+                                       ast_set_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED);
                                        if (iaxs[fr.callno]->owner) {
                                                /* Switch us to use a 
compatible format */
                                                
iaxs[fr.callno]->owner->nativeformats = iaxs[fr.callno]->peerformat;
@@ -7145,7 +7149,7 @@
 #endif                         
                                break;
                        case IAX_COMMAND_AUTHREQ:
-                               if (iaxs[fr.callno]->state & (IAX_STATE_STARTED 
| IAX_STATE_TBD)) {
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED | IAX_STATE_TBD)) {
                                        ast_log(LOG_WARNING, "Call on %s is 
already up, can't start on it\n", iaxs[fr.callno]->owner ? 
iaxs[fr.callno]->owner->name : "<Unknown>");
                                        break;
                                }
@@ -7160,7 +7164,7 @@
                                if (delayreject)
                                        send_command_immediate(iaxs[fr.callno], 
AST_FRAME_IAX, IAX_COMMAND_ACK, fr.ts, NULL, 0,fr.iseqno);
                                /* Ignore once we've started */
-                               if (iaxs[fr.callno]->state & (IAX_STATE_STARTED 
| IAX_STATE_TBD)) {
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_STARTED | IAX_STATE_TBD)) {
                                        ast_log(LOG_WARNING, "Call on %s is 
already up, can't start on it\n", iaxs[fr.callno]->owner ? 
iaxs[fr.callno]->owner->name : "<Unknown>");
                                        break;
                                }
@@ -7278,7 +7282,7 @@
                                                iax_ie_append_int(&ied1, 
IAX_IE_FORMAT, format);
                                                send_command(iaxs[fr.callno], 
AST_FRAME_IAX, IAX_COMMAND_ACCEPT, 0, ied1.buf, ied1.pos, -1);
                                                if 
(strcmp(iaxs[fr.callno]->exten, "TBD")) {
-                                                       iaxs[fr.callno]->state 
|= IAX_STATE_STARTED;
+                                                       
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED);
                                                        if (option_verbose > 2) 
                                                                
ast_verbose(VERBOSE_PREFIX_3 "Accepting AUTHENTICATED call from %s:\n"
                                                                                
        "%srequested format = %s,\n"
@@ -7298,11 +7302,11 @@
                                                                                
        VERBOSE_PREFIX_4,
                                                                                
        using_prefs);
 
-                                                       iaxs[fr.callno]->state 
|= IAX_STATE_STARTED;
+                                                       
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED);
                                                        if(!(c = 
ast_iax2_new(fr.callno, AST_STATE_RING, format)))
                                                                
iax2_destroy_nolock(fr.callno);
                                                } else {
-                                                       iaxs[fr.callno]->state 
|= IAX_STATE_TBD;
+                                                       
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_TBD);
                                                        /* If this is a TBD 
call, we're ready but now what...  */
                                                        if (option_verbose > 2)
                                                                
ast_verbose(VERBOSE_PREFIX_3 "Accepted AUTHENTICATED TBD call from %s\n", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr));
@@ -7311,8 +7315,8 @@
                                }
                                break;
                        case IAX_COMMAND_DIAL:
-                               if (iaxs[fr.callno]->state & IAX_STATE_TBD) {
-                                       iaxs[fr.callno]->state &= 
~IAX_STATE_TBD;
+                               if (ast_test_flag(&iaxs[fr.callno]->state, 
IAX_STATE_TBD)) {
+                                       ast_clear_flag(&iaxs[fr.callno]->state, 
IAX_STATE_TBD);
                                        ast_copy_string(iaxs[fr.callno]->exten, 
ies.called_number ? ies.called_number : "s", sizeof(iaxs[fr.callno]->exten));   
                                        if (!ast_exists_extension(NULL, 
iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num)) 
{
                                                if (authdebug)
@@ -7322,10 +7326,10 @@
                                                iax_ie_append_byte(&ied0, 
IAX_IE_CAUSECODE, AST_CAUSE_NO_ROUTE_DESTINATION);
                                                
send_command_final(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_REJECT, 0, 
ied0.buf, ied0.pos, -1);
                                        } else {
-                                               iaxs[fr.callno]->state |= 
IAX_STATE_STARTED;
+                                               
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED);
                                                if (option_verbose > 2) 
                                                        
ast_verbose(VERBOSE_PREFIX_3 "Accepting DIAL from %s, formats = 0x%x\n", 
ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr), iaxs[fr.callno]->peerformat);
-                                               iaxs[fr.callno]->state |= 
IAX_STATE_STARTED;
+                                               
ast_set_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED);
                                                send_command(iaxs[fr.callno], 
AST_FRAME_CONTROL, AST_CONTROL_PROGRESS, 0, NULL, 0, -1);
                                                if(!(c = 
ast_iax2_new(fr.callno, AST_STATE_RING, iaxs[fr.callno]->peerformat)))
                                                        
iax2_destroy_nolock(fr.callno);
@@ -7354,7 +7358,7 @@
                                        auth_fail(fr.callno, 
IAX_COMMAND_REGREJ);
                                        break;
                                }
-                               if ((ast_strlen_zero(iaxs[fr.callno]->secret) 
&& ast_strlen_zero(iaxs[fr.callno]->inkeys)) || (iaxs[fr.callno]->state & 
IAX_STATE_AUTHENTICATED)) {
+                               if ((ast_strlen_zero(iaxs[fr.callno]->secret) 
&& ast_strlen_zero(iaxs[fr.callno]->inkeys)) || 
ast_test_flag(&iaxs[fr.callno]->state, IAX_STATE_AUTHENTICATED)) {
                                        if (f.subclass == IAX_COMMAND_REGREL)
                                                memset(&sin, 0, sizeof(sin));
                                        if 
(update_registry(iaxs[fr.callno]->peer, &sin, fr.callno, ies.devicetype, fd, 
ies.refresh))
@@ -7539,7 +7543,7 @@
                /* FIXME? Surely right here would be the right place to undo 
timestamp wraparound? */
        }
        /* Don't pass any packets until we're started */
-       if (!(iaxs[fr.callno]->state & IAX_STATE_STARTED)) {
+       if (!ast_test_flag(&iaxs[fr.callno]->state, IAX_STATE_STARTED)) {
                ast_mutex_unlock(&iaxsl[fr.callno]);
                return 1;
        }
@@ -8958,7 +8962,7 @@
                dp->peer = iaxs[callno]->dpentries;
                iaxs[callno]->dpentries = dp;
                /* Send the request if we're already up */
-               if (iaxs[callno]->state & IAX_STATE_STARTED)
+               if (ast_test_flag(&iaxs[callno]->state, IAX_STATE_STARTED))
                        iax2_dprequest(dp, callno);
                ast_mutex_unlock(&iaxsl[callno]);
        }

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to