Module: kamailio
Branch: master
Commit: 617e8c40608c5e2ac97dd4b39d9ab739a779b9bb
URL: 
https://github.com/kamailio/kamailio/commit/617e8c40608c5e2ac97dd4b39d9ab739a779b9bb

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2017-08-11T09:46:29+02:00

acc_diameter: few updates to make cleaner avp handling

---

Modified: src/modules/acc_diameter/diam_avp.c
Modified: src/modules/acc_diameter/diam_message.c
Modified: src/modules/acc_diameter/diam_tcp.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/617e8c40608c5e2ac97dd4b39d9ab739a779b9bb.diff
Patch: 
https://github.com/kamailio/kamailio/commit/617e8c40608c5e2ac97dd4b39d9ab739a779b9bb.patch

---

diff --git a/src/modules/acc_diameter/diam_avp.c 
b/src/modules/acc_diameter/diam_avp.c
index f9d98dc61d..2ea5a577fa 100644
--- a/src/modules/acc_diameter/diam_avp.c
+++ b/src/modules/acc_diameter/diam_avp.c
@@ -107,7 +107,7 @@ AAA_AVP*  AAACreateAVP(
        size_t length,
        AVPDataStatus data_status)
 {
-       AAA_AVP *avp;
+       AAA_AVP *avp = NULL;
 
        /* first check the params */
        if( data==0 || length==0) {
@@ -146,7 +146,8 @@ AAA_AVP*  AAACreateAVP(
 
        return avp;
 error:
-       LM_ERR("no more free memoryfor a new AVP!\n");
+       LM_ERR("no more free memory for a new AVP!\n");
+       if(avp) ad_free(avp);
        return 0;
 }
 
diff --git a/src/modules/acc_diameter/diam_message.c 
b/src/modules/acc_diameter/diam_message.c
index 07b441d969..614318b26d 100644
--- a/src/modules/acc_diameter/diam_message.c
+++ b/src/modules/acc_diameter/diam_message.c
@@ -293,11 +293,15 @@ AAAMessage* AAATranslateMessage( unsigned char* source, 
unsigned int sourceLen,
                /* create the AVP */
                avp = AAACreateAVP( avp_code, avp_flags, avp_vendorID, 
(char*)ptr,
                        avp_data_len, AVP_DONT_FREE_DATA);
-               if (!avp)
+               if (!avp) {
+                       LM_ERR("failed to create aaa avp\n");
                        goto error;
+               }
 
                /* link the avp into aaa message to the end */
-               AAAAddAVPToMessage( msg, avp, msg->avpList.tail);
+               if(AAAAddAVPToMessage( msg, avp, msg->avpList.tail)!= 
AAA_ERR_SUCCESS) {
+                       LM_ERR("failed to add aaa avp to message\n");
+                       goto error;             }
 
                ptr += to_32x_len( avp_data_len );
        }
diff --git a/src/modules/acc_diameter/diam_tcp.c 
b/src/modules/acc_diameter/diam_tcp.c
index 724383d682..77525479c5 100644
--- a/src/modules/acc_diameter/diam_tcp.c
+++ b/src/modules/acc_diameter/diam_tcp.c
@@ -48,13 +48,13 @@
 /*! \brief TCP connection setup */
 int init_mytcp(char* host, int port)
 {
-       int sockfd;
+       int sfd;
        struct sockaddr_in serv_addr;
        struct hostent *server;
 
-       sockfd = socket(PF_INET, SOCK_STREAM, 0);
+       sfd = socket(PF_INET, SOCK_STREAM, 0);
 
-       if (sockfd < 0)
+       if (sfd < 0)
        {
                LM_ERR("failed to create the socket\n");
                return -1;
@@ -64,6 +64,7 @@ int init_mytcp(char* host, int port)
        if (server == NULL)
        {
                LM_ERR("failed to find the host\n");
+               close(sfd);
                return -1;
        }
 
@@ -73,18 +74,19 @@ int init_mytcp(char* host, int port)
                        server->h_length);
        serv_addr.sin_port = htons(port);
 
-       if (connect(sockfd, (const struct sockaddr *)&serv_addr,
+       if (connect(sfd, (const struct sockaddr *)&serv_addr,
                                sizeof(serv_addr)) < 0)
        {
                LM_ERR("failed to connec to the DIAMETER client\n");
+               close(sfd);
                return -1;
        }
 
-       return sockfd;
+       return sfd;
 }
 
 /*! \brief send a message over an already opened TCP connection */
-int tcp_send_recv(int sockfd, char* buf, int len, rd_buf_t* rb,
+int tcp_send_recv(int sfd, char* buf, int len, rd_buf_t* rb,
                unsigned int waited_id)
 {
        int n, number_of_tries;
@@ -97,7 +99,7 @@ int tcp_send_recv(int sockfd, char* buf, int len, rd_buf_t* 
rb,
        unsigned int m_id;
 
        /* try to write the message to the Diameter client */
-       while( (n=write(sockfd, buf, len))==-1 )
+       while( (n=write(sfd, buf, len))==-1 )
        {
                if (errno==EINTR)
                        continue;
@@ -116,26 +118,26 @@ int tcp_send_recv(int sockfd, char* buf, int len, 
rd_buf_t* rb,
 
        /* Initialize the set of active sockets. */
        FD_ZERO (&active_fd_set);
-       FD_SET (sockfd, &active_fd_set);
+       FD_SET (sfd, &active_fd_set);
        number_of_tries = 0;
 
        while(number_of_tries<MAX_TRIES)
        {
                read_fd_set = active_fd_set;
-               if (select (sockfd+1, &read_fd_set, NULL, NULL, &tv) < 0)
+               if (select (sfd+1, &read_fd_set, NULL, NULL, &tv) < 0)
                {
                        LM_ERR("select function failed\n");
                        return AAA_ERROR;
                }
 
-               /*              if (!FD_ISSET (sockfd, &read_fd_set))
+               /*              if (!FD_ISSET (sfd, &read_fd_set))
                                {
                                LM_ERR("no response received\n");
                //                      return AAA_ERROR;
                }
                */              /* Data arriving on a already-connected socket. 
*/
                reset_read_buffer(rb);
-               switch( do_read(sockfd, rb) )
+               switch( do_read(sfd, rb) )
                {
                        case CONN_ERROR:
                                LM_ERR("failed to read from socket\n");


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to