Merge comment/formatting fixes from OEJ
authorMark Spencer <markster@digium.com>
Mon, 15 Nov 2004 13:39:40 +0000 (13:39 +0000)
committerMark Spencer <markster@digium.com>
Mon, 15 Nov 2004 13:39:40 +0000 (13:39 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4255 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 3ee3107..2672039 100755 (executable)
 /* guard limit must be larger than guard secs */
 /* guard min must be < 1000, and should be >= 250 */
 #define EXPIRY_GUARD_SECS      15      /* How long before expiry do we reregister */
-#define EXPIRY_GUARD_LIMIT      30     /* Below here, we use EXPIRY_GUARD_PCT instead of EXPIRY_GUARD_SECS */
-#define EXPIRY_GUARD_MIN       500     /* This is the minimum guard time applied. If GUARD_PCT turns out
-                                       to be lower than this, it will use this time instead. This is in
-                                       milliseconds. */
-#define EXPIRY_GUARD_PCT        0.20   /* Percentage of expires timeout to use when below EXPIRY_GUARD_LIMIT */
+#define EXPIRY_GUARD_LIMIT      30     /* Below here, we use EXPIRY_GUARD_PCT instead of 
+                                          EXPIRY_GUARD_SECS */
+#define EXPIRY_GUARD_MIN       500     /* This is the minimum guard time applied. If 
+                                          GUARD_PCT turns out to be lower than this, it 
+                                          will use this time instead.
+                                          This is in milliseconds. */
+#define EXPIRY_GUARD_PCT        0.20   /* Percentage of expires timeout to use when 
+                                          below EXPIRY_GUARD_LIMIT */
+
+static int max_expiry = DEFAULT_MAX_EXPIRY;
+static int default_expiry = DEFAULT_DEFAULT_EXPIRY;
 
 #ifndef MAX
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #define CALLERID_UNKNOWN       "Unknown"
 
 /* --- Choices for DTMF support in SIP channel */
-#define SIP_DTMF_RFC2833       (1 << 0)
-#define SIP_DTMF_INBAND                (1 << 1)
-#define SIP_DTMF_INFO          (1 << 2)
+#define SIP_DTMF_RFC2833       (1 << 0)        /* RTP DTMF */
+#define SIP_DTMF_INBAND                (1 << 1)        /* Inband audio, only for ULAW/ALAW */
+#define SIP_DTMF_INFO          (1 << 2)        /* SIP Info messages */
 
-static int max_expiry = DEFAULT_MAX_EXPIRY;
-static int default_expiry = DEFAULT_DEFAULT_EXPIRY;
 
 #define DEFAULT_MAXMS          2000            /* Must be faster than 2 seconds by default */
-#define DEFAULT_FREQ_OK                60 * 1000               /* How often to check for the host to be up */
-#define DEFAULT_FREQ_NOTOK     10 * 1000               /* How often to check, if the host is down... */
+#define DEFAULT_FREQ_OK                60 * 1000       /* How often to check for the host to be up */
+#define DEFAULT_FREQ_NOTOK     10 * 1000       /* How often to check, if the host is down... */
 
-#define DEFAULT_RETRANS                1000                    /* How frequently to retransmit */
-#define MAX_RETRANS            5                       /* Try only 5 times for retransmissions */
+#define DEFAULT_RETRANS                1000            /* How frequently to retransmit */
+#define MAX_RETRANS            5               /* Try only 5 times for retransmissions */
 
-                                                       /* SIP Debug            */
-#define DEBUG_READ     0                               /* Recieved data        */
-#define DEBUG_SEND     1                               /* Transmit data        */
+                                               /* SIP Debug            */
+#define DEBUG_READ     0                       /* Recieved data        */
+#define DEBUG_SEND     1                       /* Transmit data        */
 
 static char *desc = "Session Initiation Protocol (SIP)";
 static char *type = "SIP";
@@ -113,7 +117,7 @@ static char *tdesc = "Session Initiation Protocol (SIP)";
 static char *config = "sip.conf";
 
 #define DEFAULT_SIP_PORT       5060    /* From RFC 2543 */
-#define SIP_MAX_PACKET 4096            /* Also from RFC 2543, should sub headers tho */
+#define SIP_MAX_PACKET         4096    /* Also from RFC 2543, should sub headers tho */
 
 #define ALLOWED_METHODS "INVITE, ACK, CANCEL, OPTIONS, BYE, REFER"
 
@@ -146,7 +150,7 @@ static int global_trustrpid = 0;    /* Trust RPID headers? Default off. */
 static int global_progressinband = 0;
 
 #ifdef OSP_SUPPORT
-static int global_ospauth = 0;
+static int global_ospauth = 0;         /* OSP = Open Settlement Protocol */
 #endif
 
 #define DEFAULT_MWITIME 10
@@ -187,11 +191,11 @@ static int videosupport = 0;
 
 static int global_dtmfmode = SIP_DTMF_RFC2833;         /* DTMF mode default */
 static int recordhistory = 0;
-static int global_promiscredir;
+static int global_promiscredir;                                /* Support of 302 REDIR - Default off */
 
 static char global_musicclass[MAX_LANGUAGE] = "";      /* Global music on hold class */
 static char global_realm[AST_MAX_EXTENSION] = "asterisk";      /* Default realm */
-static char regcontext[AST_MAX_EXTENSION] = "";
+static char regcontext[AST_MAX_EXTENSION] = "";                /* Context for auto-extensions */
 
 /* Expire slowly */
 static int expiry = 900;
@@ -216,10 +220,10 @@ static struct sip_codec_pref {
 
 /* sip_request: The data grabbed from the UDP socket */
 struct sip_request {
-  char *rlPart1; /* SIP Method Name or "SIP/2.0" protocol version */
-  char *rlPart2; /* The Request URI or Response Status */
-       int len;
-       int headers;                                    /* SIP Headers */
+       char *rlPart1;          /* SIP Method Name or "SIP/2.0" protocol version */
+       char *rlPart2;          /* The Request URI or Response Status */
+       int len;                /* Length */
+       int headers;            /* # of SIP Headers */
        char *header[SIP_MAX_HEADERS];
        int lines;                                              /* SDP Content */
        char *line[SIP_MAX_LINES];
@@ -273,7 +277,7 @@ static struct sip_pvt {
        struct sockaddr_in sa;                  /* Our peer */
        struct sockaddr_in redirip;             /* Where our RTP should be going if not to us */
        struct sockaddr_in vredirip;            /* Where our Video RTP should be going if not to us */
-       int redircodecs;                                /* Redirect codecs */
+       int redircodecs;                        /* Redirect codecs */
        struct sockaddr_in recv;                /* Received as */
        struct in_addr ourip;                   /* Our IP */
        struct ast_channel *owner;              /* Who owns us */
@@ -298,12 +302,12 @@ static struct sip_pvt {
        char peername[256];
        char authname[256];                     /* Who we use for authentication */
        char uri[256];                          /* Original requested URI */
-       char peersecret[256];
+       char peersecret[256];                   /* Password */
        char peermd5secret[256];
        char cid_num[256];                      /* Caller*ID */
        char cid_name[256];                     /* Caller*ID */
-       char via[256];
-       char fullcontact[128];          /* Extra parameters to go in the "To" header */
+       char via[256];                          /* Via: header */
+       char fullcontact[128];                  /* The Contact: that the UA registers with us */
        char accountcode[20];                   /* Account code */
        char our_contact[256];                  /* Our contact header */
        char realm[256];                        /* Authorization realm */
@@ -331,15 +335,15 @@ static struct sip_pvt {
        int rtptimeout;                         /* RTP timeout time */
        int rtpholdtimeout;                     /* RTP timeout when on hold */
 
-       int subscribed;
+       int subscribed;                         /* Is this call a subscription?  */
        int stateid;
        int dialogver;
        int promiscredir;                       /* Promiscuous redirection */
        
-       int trustrpid;
+       int trustrpid;                          /* Trust RPID headers? */
        int progressinband;
        
-       int dtmfmode;
+       int dtmfmode;                           /* DTMF to use for this call */
        struct ast_dsp *vad;
        
        struct sip_peer *peerpoke;              /* If this calls is to poke a peer, which one */
@@ -347,7 +351,7 @@ static struct sip_pvt {
        struct ast_rtp *rtp;                    /* RTP Session */
        struct ast_rtp *vrtp;                   /* Video RTP session */
        struct sip_pkt *packets;                /* Packets scheduled for re-transmission */
-       struct sip_history *history;    /* History of this SIP dialog */
+       struct sip_history *history;            /* History of this SIP dialog */
        struct sip_pvt *next;                   /* Next call in chain */
 } *iflist = NULL;
 
@@ -357,104 +361,104 @@ static struct sip_pvt {
 /* sip packet - read in sipsock_read, transmitted in send_request */
 struct sip_pkt {
        struct sip_pkt *next;                           /* Next packet */
-       int retrans;                                            /* Retransmission number */
-       int seqno;                                                      /* Sequence number */
-       int flags;                                                      /* non-zero if this is a response packet (e.g. 200 OK) */
+       int retrans;                                    /* Retransmission number */
+       int seqno;                                      /* Sequence number */
+       int flags;                                      /* non-zero if this is a response packet (e.g. 200 OK) */
        struct sip_pvt *owner;                          /* Owner call */
-       int retransid;                                          /* Retransmission ID */
-       int packetlen;                                          /* Length of packet */
+       int retransid;                                  /* Retransmission ID */
+       int packetlen;                                  /* Length of packet */
        char data[0];
 };     
 
 /* Structure for SIP user data. User's place calls to us */
 struct sip_user {
        /* Users who can access various contexts */
-       char name[80];
-       char secret[80];
-       char md5secret[80];
-       char context[80];
-       char cid_num[80];
-       char cid_name[80];
-       char accountcode[20];
-       char language[MAX_LANGUAGE];
+       char name[80];                  /* The name in sip.conf */
+       char secret[80];                /* Password */
+       char md5secret[80];             /* Password in md5 */
+       char context[80];               /* Default context for incoming calls */
+       char cid_num[80];               /* Caller ID num */
+       char cid_name[80];              /* Caller ID name */
+       char accountcode[20];           /* Account code */
+       char language[MAX_LANGUAGE];    /* Default language for this user */
        char musicclass[MAX_LANGUAGE];  /* Music on Hold class */
        char useragent[256];            /* User agent in SIP request */
-       unsigned int callgroup;
-       unsigned int pickupgroup;
-       int nat;
-       int amaflags;
-       int callingpres;
-       int insecure;
-       int canreinvite;
-       int capability;
+       unsigned int callgroup;         /* Call group */
+       unsigned int pickupgroup;       /* Pickup Group */
+       int nat;                        /* NAT setting */
+       int amaflags;                   /* AMA flags for billing */
+       int callingpres;                /* Calling id presentation */
+       int insecure;                   /* Insecure means don't check password */
+       int canreinvite;                /* Do we support re-invites ? */
+       int capability;                 /* Codec capability */
 #ifdef OSP_SUPPORT
-       int ospauth;                            /* Allow OSP Authentication */
+       int ospauth;                    /* Allow OSP Authentication */
 #endif
-       int dtmfmode;
+       int dtmfmode;                   /* DTMF setting */
        int inUse;
        int incominglimit;
        int outUse;
        int outgoinglimit;
-       int promiscredir;
-       int useclientcode;
-       int trustrpid;
+       int promiscredir;               /* Support of 302 redirect */
+       int useclientcode;              /* SNOM clientcode support */
+       int trustrpid;                  /* Trust remote party ID from this UA */
        int progressinband;
-       struct ast_ha *ha;
-       int temponly;
+       struct ast_ha *ha;              /* ACL setting */
+       int temponly;                   /* Flag for temporary users (realtime) */
        struct sip_user *next;
 };
 
 /* Structure for SIP peer data, we place calls to peers if registred  or fixed IP address (host) */
 struct sip_peer {
-       char name[80];
-       char secret[80];
-       char md5secret[80];
-       char context[80];               /* JK02: peers need context too to allow parking etc */
-       char username[80];
-       char tohost[80];
-       char regexten[AST_MAX_EXTENSION];       /* Extension to register (if regcontext is used) */
-       char fromuser[80];
-       char fromdomain[80];
-       char fullcontact[128];
-       char cid_num[80];
-       char cid_name[80];
-       char mailbox[AST_MAX_EXTENSION];
-       char language[MAX_LANGUAGE];
+       char name[80];                  /* Peer name in sip.conf */
+       char secret[80];                /* Password */
+       char md5secret[80];             /* Password in MD5 */
+       char context[80];               /* Default context for incoming calls */
+       char username[80];              /* Temporary username until registration */
+       char tohost[80];                /* If not dynamic, IP address */
+       char regexten[AST_MAX_EXTENSION]; /* Extension to register (if regcontext is used) */
+       char fromuser[80];              /* From: user when calling this peer */
+       char fromdomain[80];            /* From: domain when calling this peer */
+       char fullcontact[128];          /* Contact registred with us (not in sip.conf) */
+       char cid_num[80];               /* Caller ID num */
+       char cid_name[80];              /* Caller ID name */
+       char mailbox[AST_MAX_EXTENSION]; /* Mailbox setting for MWI checks */
+       char language[MAX_LANGUAGE];    /* Default language for prompts */
        char musicclass[MAX_LANGUAGE];  /* Music on Hold class */
-       char useragent[256];            /* User agent in SIP request */
+       char useragent[256];            /* User agent in SIP request (saved from registration) */
        int lastmsgssent;
-       time_t  lastmsgcheck;
-       int dynamic;
-       int expire;
+       time_t  lastmsgcheck;           /* Last time we checked for MWI */
+       int dynamic;                    /* Dynamic? Yes or no. Dynamic hosts register with us  */
+       int expire;                     /* Registration expiration */
        int expiry;
-       int capability;
+       int capability;                 /* Codec capability */
        int rtptimeout;
        int rtpholdtimeout;
-       int insecure;
+       int insecure;                   /* Do we want to authenticate this peer? */
 #ifdef OSP_SUPPORT
-       int ospauth;                            /* Allow OSP Authentication */
+       int ospauth;                    /* Allow OSP Authentication */
 #endif 
-       int nat;
-       int canreinvite;
-       unsigned int callgroup;
-       unsigned int pickupgroup;
-       int promiscredir;
-       int dtmfmode;
-       int trustrpid;
-       int useclientcode;
+       int nat;                        /* NAT support needed? */
+       int canreinvite;                /* Does the peer support re-invites? */
+       unsigned int callgroup;         /* Call group */
+       unsigned int pickupgroup;       /* Pickup group */
+       int promiscredir;               /* Support of 302 redirect? */
+       int dtmfmode;                   /* DTMF mode */
+       int trustrpid;                  /* Trust Remote Party ID headers? */
+       int useclientcode;              /* SNOM clientcode support */
        int progressinband;
-       struct sockaddr_in addr;
+       struct sockaddr_in addr;        /* IP address of peer */
        struct in_addr mask;
 
        /* Qualification */
        struct sip_pvt *call;           /* Call pointer */
-       int pokeexpire;                         /* When to expire poke */
-       int lastms;                                     /* How long last response took (in ms), or -1 for no response */
-       int maxms;                                      /* Max ms we will accept for the host to be up, 0 to not monitor */
-       struct timeval ps;                      /* Ping send time */
+       int pokeexpire;                 /* When to expire poke (qualify= checking) */
+       int lastms;                     /* How long last response took (in ms), or -1 for no response */
+       int maxms;                      /* Max ms we will accept for the host to be up, 0 to not monitor */
+       struct timeval ps;              /* Ping send time */
        
-       struct sockaddr_in defaddr;
-       struct ast_ha *ha;
+       struct sockaddr_in defaddr;     /* Default IP address, used until registration */
+       struct ast_ha *ha;              /* Access control list */
        int delme;
        int selfdestruct;
        int lastmsg;
@@ -465,25 +469,27 @@ struct sip_peer {
 AST_MUTEX_DEFINE_STATIC(sip_reload_lock);
 static int sip_reloading = 0;
 
-#define REG_STATE_UNREGISTERED 0
-#define REG_STATE_REGSENT         1
-#define REG_STATE_AUTHSENT        2
-#define REG_STATE_REGISTERED   3
-#define REG_STATE_REJECTED        4
-#define REG_STATE_TIMEOUT         5
-#define REG_STATE_NOAUTH          6
-
-#define SIP_NAT_NEVER          0
+/* States for outbound registrations (with register= lines in sip.conf */
+#define REG_STATE_UNREGISTERED         0
+#define REG_STATE_REGSENT              1
+#define REG_STATE_AUTHSENT             2
+#define REG_STATE_REGISTERED                   3
+#define REG_STATE_REJECTED             4
+#define REG_STATE_TIMEOUT              5
+#define REG_STATE_NOAUTH               6
+
+/* NAT settings */
+#define SIP_NAT_NEVER          0               /* No nat support */
 #define SIP_NAT_RFC3581                (1 << 0)
 #define SIP_NAT_ROUTE          (1 << 2)
 #define SIP_NAT_ALWAYS         (SIP_NAT_ROUTE | SIP_NAT_RFC3581)
 
 /* sip_registry: Registrations with other SIP proxies */
 struct sip_registry {
-       int portno;                             /* Optional port override */
+       int portno;                     /* Optional port override */
        char username[80];              /* Who we are registering as */
        char authuser[80];              /* Who we *authenticate* as */
-       char hostname[80];
+       char hostname[80];              /* Domain or host we register to */
        char secret[80];                /* Password or key name in []'s */      
        char md5secret[80];
        char contact[80];               /* Contact extension */
@@ -492,7 +498,7 @@ struct sip_registry {
        int timeout;                    /* sched id of sip_reg_timeout */
        int refresh;                    /* How often to refresh */
        struct sip_pvt *call;           /* create a sip_pvt structure for each outbound "registration call" in progress */
-       int regstate;
+       int regstate;                   /* Registration state (see above) */
        int callid_valid;               /* 0 means we haven't chosen callid for this registry yet. */
        char callid[80];                /* Global CallID for this registry */
        unsigned int ocseq;             /* Sequence number we got to for REGISTERs for this registry */
@@ -5262,7 +5268,7 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
        rpid = get_header(req, "Remote-Party-ID");
        memset(rpid_num,0,sizeof(rpid_num));
        if(!ast_strlen_zero(rpid)) 
-         p->callingpres = get_rpid_num(rpid,rpid_num, sizeof(rpid_num));
+               p->callingpres = get_rpid_num(rpid,rpid_num, sizeof(rpid_num));
 
        of = ditch_braces(from);
        if (ast_strlen_zero(p->exten)) {
@@ -5290,7 +5296,7 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
        if (*calleridname)
                strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
        if (ast_strlen_zero(of))
-                       return 0;
+               return 0;
        ast_mutex_lock(&userl.lock);
        user = find_user(of);
        /* Find user based on user name in the from header */
@@ -5304,10 +5310,10 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
                p->progressinband = user->progressinband;
                /* replace callerid if rpid found, and not restricted */
                if(!ast_strlen_zero(rpid_num) && p->trustrpid) {
-                 if (*calleridname)
-                       strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
-                 strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
-                 ast_shrink_phone_number(p->cid_num);
+                       if (*calleridname)
+                               strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
+                       strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
+                       ast_shrink_phone_number(p->cid_num);
                }
 
                if (p->rtp) {
@@ -5383,10 +5389,10 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
                        p->progressinband = peer->progressinband;
                        /* replace callerid if rpid found, and not restricted */
                        if(!ast_strlen_zero(rpid_num) && p->trustrpid) {
-                         if (*calleridname)
-                               strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
-                         strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
-                         ast_shrink_phone_number(p->cid_num);
+                               if (*calleridname)
+                                       strncpy(p->cid_name, calleridname, sizeof(p->cid_name) - 1);
+                               strncpy(p->cid_num, rpid_num, sizeof(p->cid_num) - 1);
+                               ast_shrink_phone_number(p->cid_num);
                        }
 #ifdef OSP_SUPPORT
                        p->ospauth = peer->ospauth;
@@ -5459,11 +5465,14 @@ static int check_user_full(struct sip_pvt *p, struct sip_request *req, char *cmd
 
        return res;
 }
+
+/*--- check_user: Find user ---*/
 static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, char *uri, int reliable, struct sockaddr_in *sin, int ignore)
 {
        return check_user_full(p, req, cmd, uri, reliable, sin, ignore, NULL, 0);
 }
-/*--- get_msg_text: Get text out of a SIP MESSAGE ---*/
+
+/*--- get_msg_text: Get text out of a SIP MESSAGE packet ---*/
 static int get_msg_text(char *buf, int len, struct sip_request *req)
 {
        int x;
@@ -5491,6 +5500,7 @@ static void receive_message(struct sip_pvt *p, struct sip_request *req)
 {
        char buf[1024];
        struct ast_frame f;
+
        if (get_msg_text(buf, sizeof(buf), req)) {
                ast_log(LOG_WARNING, "Unable to retrieve text from %s\n", p->callid);
                return;
@@ -5498,13 +5508,13 @@ static void receive_message(struct sip_pvt *p, struct sip_request *req)
        if (p->owner) {
                if (sip_debug_test_pvt(p))
                        ast_verbose("Message received: '%s'\n", buf);
-                 memset(&f, 0, sizeof(f));
-                 f.frametype = AST_FRAME_TEXT;
-                 f.subclass = 0;
-                 f.offset = 0;
-                 f.data = buf;
-                 f.datalen = strlen(buf);
-                 ast_queue_frame(p->owner, &f);
+               memset(&f, 0, sizeof(f));
+               f.frametype = AST_FRAME_TEXT;
+               f.subclass = 0;
+               f.offset = 0;
+               f.data = buf;
+               f.datalen = strlen(buf);
+               ast_queue_frame(p->owner, &f);
        }
 }
 
@@ -5518,6 +5528,7 @@ static int sip_show_inuse(int fd, int argc, char *argv[]) {
        char olimits[40] = "";
        char iused[40];
        char oused[40];
+
        if (argc != 3) 
                return RESULT_SHOWUSAGE;
        ast_mutex_lock(&userl.lock);
@@ -5678,20 +5689,20 @@ static int sip_show_peers(int fd, int argc, char *argv[])
 /*--- print_group: Print call group and pickup group ---*/
 static void  print_group(int fd, unsigned int group) 
 {
- unsigned int i;
- int first=1;
+       unsigned int i;
+       int first=1;
 
- for (i=0; i<=31; i++) {       /* Max group is 31 */
-       if (group & (1 << i)) {
-          if (!first) {
-               ast_cli(fd, ", ");
-          } else {
-               first=0;
-          }
-          ast_cli(fd, "%u", i);
-       }
-    }
- ast_cli(fd, " (%u)\n", group);
+       for (i=0; i<=31; i++) { /* Max group is 31 */
+               if (group & (1 << i)) {
+                       if (!first) {
+                               ast_cli(fd, ", ");
+                       } else {
+                               first=0;
+                       }
+                       ast_cli(fd, "%u", i);
+               }
+       }
+       ast_cli(fd, " (%u)\n", group);
 }
 
 /*--- sip_show_peer: Show one peer in detail ---*/
@@ -5811,6 +5822,7 @@ static int sip_show_registry(int fd, int argc, char *argv[])
 #define FORMAT  "%-30.30s  %-12.12s  %8d %-20.20s\n"
        struct sip_registry *reg;
        char host[80];
+
        if (argc != 3)
                return RESULT_SHOWUSAGE;
        ast_mutex_lock(&regl.lock);
@@ -5854,31 +5866,31 @@ static int __sip_show_channels(int fd, int argc, char *argv[], int subscriptions
        ast_mutex_lock(&iflock);
        cur = iflist;
        if (!subscriptions)
-          ast_cli(fd, FORMAT2, "Peer", "User/ANR", "Call ID", "Seq (Tx/Rx)",  "Format");
+               ast_cli(fd, FORMAT2, "Peer", "User/ANR", "Call ID", "Seq (Tx/Rx)",  "Format");
        else
-           ast_cli(fd, FORMAT3, "Peer", "User", "Call ID", "URI");
+               ast_cli(fd, FORMAT3, "Peer", "User", "Call ID", "URI");
        while (cur) {
                if (!cur->subscribed && !subscriptions) {
-                  ast_cli(fd, FORMAT, ast_inet_ntoa(iabuf, sizeof(iabuf), cur->sa.sin_addr), 
-                       ast_strlen_zero(cur->username) ? ( ast_strlen_zero(cur->cid_num) ? "(None)" : cur->cid_num ) : cur->username, 
-                       cur->callid, 
-                       cur->ocseq, cur->icseq, 
-                       ast_getformatname(cur->owner ? cur->owner->nativeformats : 0), cur->needdestroy ? "(d)" : "" );
-               numchans++;
+                       ast_cli(fd, FORMAT, ast_inet_ntoa(iabuf, sizeof(iabuf), cur->sa.sin_addr), 
+                               ast_strlen_zero(cur->username) ? ( ast_strlen_zero(cur->cid_num) ? "(None)" : cur->cid_num ) : cur->username, 
+                               cur->callid, 
+                               cur->ocseq, cur->icseq, 
+                               ast_getformatname(cur->owner ? cur->owner->nativeformats : 0), cur->needdestroy ? "(d)" : "" );
+                       numchans++;
                }
                if (cur->subscribed && subscriptions) {
-                   ast_cli(fd, FORMAT3, ast_inet_ntoa(iabuf, sizeof(iabuf), cur->sa.sin_addr),
-                       ast_strlen_zero(cur->username) ? ( ast_strlen_zero(cur->cid_num) ? "(None)" : cur->cid_num ) : cur->username, 
-                        cur->callid, cur->uri);
+                       ast_cli(fd, FORMAT3, ast_inet_ntoa(iabuf, sizeof(iabuf), cur->sa.sin_addr),
+                               ast_strlen_zero(cur->username) ? ( ast_strlen_zero(cur->cid_num) ? "(None)" : cur->cid_num ) : cur->username, 
+                               cur->callid, cur->uri);
 
                 }
                cur = cur->next;
        }
        ast_mutex_unlock(&iflock);
        if (!subscriptions)
-          ast_cli(fd, "%d active SIP channel(s)\n", numchans);
+               ast_cli(fd, "%d active SIP channel(s)\n", numchans);
        else
-          ast_cli(fd, "%d active SIP subscriptions(s)\n", numchans);
+               ast_cli(fd, "%d active SIP subscriptions(s)\n", numchans);
        return RESULT_SUCCESS;
 #undef FORMAT
 #undef FORMAT2
@@ -5891,6 +5903,7 @@ static char *complete_sipch(char *line, char *word, int pos, int state)
        int which=0;
        struct sip_pvt *cur;
        char *c = NULL;
+
        ast_mutex_lock(&iflock);
        cur = iflist;
        while(cur) {
@@ -5914,6 +5927,7 @@ static int sip_show_channel(int fd, int argc, char *argv[])
        char iabuf[INET_ADDRSTRLEN];
        size_t len;
        int found = 0;
+
        if (argc != 4)
                return RESULT_SHOWUSAGE;
        len = strlen(argv[3]);
@@ -5923,9 +5937,9 @@ static int sip_show_channel(int fd, int argc, char *argv[])
                if (!strncasecmp(cur->callid, argv[3],len)) {
                        ast_cli(fd,"\n");
                        if (cur->subscribed)
-                          ast_cli(fd, "  * Subscription\n");
+                               ast_cli(fd, "  * Subscription\n");
                        else
-                          ast_cli(fd, "  * SIP Call\n");
+                               ast_cli(fd, "  * SIP Call\n");
                        ast_cli(fd, "  Direction:              %s\n", cur->outgoing?"Outgoing":"Incoming");
                        ast_cli(fd, "  Call-ID:                %s\n", cur->callid);
                        ast_cli(fd, "  Our Codec Capability:   %d\n", cur->capability);
@@ -5940,13 +5954,13 @@ static int sip_show_channel(int fd, int argc, char *argv[])
                        ast_cli(fd, "  Their Tag:              %s\n", cur->theirtag);
                        ast_cli(fd, "  SIP User agent:         %s\n", cur->useragent);
                        if (!ast_strlen_zero(cur->username))
-                          ast_cli(fd, "  Username:               %s\n", cur->username);
+                               ast_cli(fd, "  Username:               %s\n", cur->username);
                        if (!ast_strlen_zero(cur->peername))
-                          ast_cli(fd, "  Peername:               %s\n", cur->peername);
+                               ast_cli(fd, "  Peername:               %s\n", cur->peername);
                        if (!ast_strlen_zero(cur->uri))
-                          ast_cli(fd, "  Original uri:           %s\n", cur->uri);
+                               ast_cli(fd, "  Original uri:           %s\n", cur->uri);
                        if (!ast_strlen_zero(cur->cid_num))
-                          ast_cli(fd, "  Caller-ID:              %s\n", cur->cid_num);
+                               ast_cli(fd, "  Caller-ID:              %s\n", cur->cid_num);
                        ast_cli(fd, "  Need Destroy:           %d\n", cur->needdestroy);
                        ast_cli(fd, "  Last Message:           %s\n", cur->lastmsg);
                        ast_cli(fd, "  Promiscuous Redir:      %s\n", cur->promiscredir ? "Yes" : "No");
@@ -5977,6 +5991,7 @@ static int sip_show_history(int fd, int argc, char *argv[])
        size_t len;
        int x;
        int found = 0;
+
        if (argc != 4)
                return RESULT_SHOWUSAGE;
        if (!recordhistory)
@@ -5988,9 +6003,9 @@ static int sip_show_history(int fd, int argc, char *argv[])
                if (!strncasecmp(cur->callid, argv[3],len)) {
                        ast_cli(fd,"\n");
                        if (cur->subscribed)
-                          ast_cli(fd, "  * Subscription\n");
+                               ast_cli(fd, "  * Subscription\n");
                        else
-                          ast_cli(fd, "  * SIP Call\n");
+                               ast_cli(fd, "  * SIP Call\n");
                        x = 0;
                        hist = cur->history;
                        while(hist) {
@@ -6027,43 +6042,43 @@ static void receive_info(struct sip_pvt *p, struct sip_request *req)
 
                /* Try getting the "signal=" part */
                if (ast_strlen_zero(c = get_sdp(req, "Signal")) && ast_strlen_zero(c = get_sdp(req, "d"))) {
-                  ast_log(LOG_WARNING, "Unable to retrieve DTMF signal from INFO message from %s\n", p->callid);
-                  transmit_response(p, "200 OK", req); /* Should return error */
-                  return;
+                       ast_log(LOG_WARNING, "Unable to retrieve DTMF signal from INFO message from %s\n", p->callid);
+                       transmit_response(p, "200 OK", req); /* Should return error */
+                       return;
                } else {
-                  strncpy(buf, c, sizeof(buf) - 1);
+                       strncpy(buf, c, sizeof(buf) - 1);
                }
        
                if (p->owner) { /* PBX call */
-                  if (!ast_strlen_zero(buf)) {
-                       if (sipdebug)
-                               ast_verbose("* DTMF received: '%c'\n", buf[0]);
-                       if (buf[0] == '*')
-                               event = 10;
-                       else if (buf[0] == '#')
-                               event = 11;
-                       else
-                               event = atoi(buf);
-                        if (event < 10) {
-                                resp = '0' + event;
-                        } else if (event < 11) {
-                                resp = '*';
-                        } else if (event < 12) {
-                                resp = '#';
-                        } else if (event < 16) {
-                                resp = 'A' + (event - 12);
-                        }
-                       /* Build DTMF frame and deliver to PBX for transmission to other call leg*/
-                        memset(&f, 0, sizeof(f));
-                        f.frametype = AST_FRAME_DTMF;
-                        f.subclass = resp;
-                        f.offset = 0;
-                        f.data = NULL;
-                        f.datalen = 0;
-                        ast_queue_frame(p->owner, &f);
-                  }
-                  transmit_response(p, "200 OK", req);
-                  return;
+                       if (!ast_strlen_zero(buf)) {
+                               if (sipdebug)
+                                       ast_verbose("* DTMF received: '%c'\n", buf[0]);
+                               if (buf[0] == '*')
+                                       event = 10;
+                               else if (buf[0] == '#')
+                                       event = 11;
+                               else
+                                       event = atoi(buf);
+                               if (event < 10) {
+                                       resp = '0' + event;
+                               } else if (event < 11) {
+                                       resp = '*';
+                               } else if (event < 12) {
+                                       resp = '#';
+                               } else if (event < 16) {
+                                       resp = 'A' + (event - 12);
+                               }
+                               /* Build DTMF frame and deliver to PBX for transmission to other call leg*/
+                               memset(&f, 0, sizeof(f));
+                               f.frametype = AST_FRAME_DTMF;
+                               f.subclass = resp;
+                               f.offset = 0;
+                               f.data = NULL;
+                               f.datalen = 0;
+                               ast_queue_frame(p->owner, &f);
+                       }
+                       transmit_response(p, "200 OK", req);
+                       return;
                } else {
                        transmit_response(p, "481 Call leg/transaction does not exist", req);
                        p->needdestroy = 1;
@@ -6098,6 +6113,7 @@ static int sip_do_debug_ip(int fd, int argc, char *argv[])
        char iabuf[INET_ADDRSTRLEN];
        int port = 0;
        char *p, *arg;
+
        if (argc != 4)
                return RESULT_SHOWUSAGE;
        arg = argv[3];
@@ -6169,6 +6185,7 @@ static int sip_do_debug(int fd, int argc, char *argv[])
        return RESULT_SUCCESS;
 }
 
+/*--- sip_do_history: Enable SIP History logging (CLI) ---*/
 static int sip_do_history(int fd, int argc, char *argv[])
 {
        if (argc != 2) {
@@ -6179,6 +6196,7 @@ static int sip_do_history(int fd, int argc, char *argv[])
        return RESULT_SUCCESS;
 }
 
+/*--- sip_no_history: Disable SIP History logging (CLI) ---*/
 static int sip_no_history(int fd, int argc, char *argv[])
 {
        if (argc != 3) {
@@ -6531,6 +6549,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
        struct timeval tv;
        int seqno=0;
        char iabuf[INET_ADDRSTRLEN];
+
        c = get_header(req, "Cseq");
        if (sscanf(c, "%d ", &seqno) != 1) {
                ast_log(LOG_WARNING, "Unable to determine sequence number\n");
@@ -6613,12 +6632,12 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                        p->initid = -1;
                }
                switch(resp) {
-               case 100:
+               case 100:       /* 100 Trying */
                        if (!strcasecmp(msg, "INVITE")) {
                                sip_cancel_destroy(p);
                        }
                        break;
-               case 183:       
+               case 183:       /* 183 Session Progress */
                        if (!strcasecmp(msg, "INVITE")) {
                                sip_cancel_destroy(p);
                                if (!ast_strlen_zero(get_header(req, "Content-Type")))
@@ -6629,7 +6648,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                                }
                        }
                        break;
-               case 180:
+               case 180:       /* 180 Ringing */
                        if (!strcasecmp(msg, "INVITE")) {
                                sip_cancel_destroy(p);
                                if (p->owner) {
@@ -6639,7 +6658,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                                }
                        }
                        break;
-               case 200:
+               case 200:       /* 200 OK */
                        if (!strcasecmp(msg, "NOTIFY")) {
                                /* They got the notify, this is the end */
                                if (p->owner) {
@@ -6651,6 +6670,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                                        }
                                }
                        } else if (!strcasecmp(msg, "INVITE")) {
+                               /* 200 OK on invite - someone's answering our call */
                                sip_cancel_destroy(p);
                                if (!ast_strlen_zero(get_header(req, "Content-Type")))
                                        process_sdp(p, req);
@@ -6751,7 +6771,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                        } else
                                p->needdestroy = 1;
                        break;
-               case 407:
+               case 407:       /* 407 Proxy Authentication Required */
                        if (!strcasecmp(msg, "INVITE")) {
                                /* First we ACK */
                                transmit_request(p, "ACK", seqno, 0, 0);
@@ -6919,6 +6939,7 @@ static void *sip_park_thread(void *stuff)
        return NULL;
 }
 
+/*--- sip_park: Park a call ---*/
 static int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct sip_request *req)
 {
        struct sip_dual *d;
@@ -7087,7 +7108,7 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
        cmd = req->header[0];
        /* Must have Cseq */
        if (ast_strlen_zero(cmd) || ast_strlen_zero(cseq))
-                       return -1;
+               return -1;
        if (sscanf(cseq, "%i%n", &seqno, &len) != 1) {
                ast_log(LOG_DEBUG, "No seqno in '%s'\n", cmd);
                return -1;
@@ -7681,6 +7702,7 @@ static int sip_send_mwi_to_peer(struct sip_peer *peer)
        char name[256] = "";
        char iabuf[INET_ADDRSTRLEN];
        int newmsgs, oldmsgs;
+
        /* Check for messages */
        ast_app_messagecount(peer->mailbox, &newmsgs, &oldmsgs);
        
@@ -7733,6 +7755,7 @@ static void *do_monitor(void *data)
        int lastpeernum = -1;
        int curpeernum;
        int reloading;
+
        /* Add an I/O event to our UDP socket */
        if (sipsock > -1) 
                ast_io_add(io, sipsock, sipsock_read, AST_IO_IN, NULL);
@@ -8277,6 +8300,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, int
        int maskfound=0;
        int format;
        int found=0;
+
        prev = NULL;
        ast_mutex_lock(&peerl.lock);
        if (temponly) {
@@ -8515,7 +8539,7 @@ static int reload_config(void)
        struct sip_user *user;
        struct ast_hostent ahp;
        char *cat;
-    char *utype;
+       char *utype;
        struct hostent *hp;
        int format;
        int oldport = ntohs(bindaddr.sin_port);