Przeglądaj źródła

Merge pull request #488 from mslehto/statsd6

modules/statsd improvements
Eloy Coto 9 lat temu
rodzic
commit
676a2d0a8a

+ 4 - 4
modules/statsd/README

@@ -21,7 +21,7 @@ Eloy Coto Pereiro
         2. Parameters
 
               2.1. ip(string)
-              2.2. port(int)
+              2.2. port(string)
 
         3. Functions
 
@@ -51,7 +51,7 @@ Chapter 1. Admin Guide
    2. Parameters
 
         2.1. ip(string)
-        2.2. port(int)
+        2.2. port(string)
 
    3. Functions
 
@@ -75,7 +75,7 @@ Chapter 1. Admin Guide
 2. Parameters
 
    2.1. ip(string)
-   2.2. port(int)
+   2.2. port(string)
 
 2.1. ip(string)
 
@@ -86,7 +86,7 @@ Chapter 1. Admin Guide
 modparam("statsd", "ip", "127.0.0.1")
 ...
 
-2.2. port(int)
+2.2. port(string)
 
    Statsd server ip
 

+ 1 - 1
modules/statsd/doc/statsd_admin.xml

@@ -45,7 +45,7 @@ modparam("statsd", "ip", "127.0.0.1")
         </section>
 
         <section id="statsd.p.serverPort">
-            <title><varname>port</varname>(int)</title>
+            <title><varname>port</varname>(string)</title>
             <para>
             Statsd server ip
             </para>

+ 14 - 20
modules/statsd/lib_statsd.c

@@ -11,47 +11,41 @@
 #include "../../sr_module.h"
 #include "lib_statsd.h"
 
-static StatsdSocket statsd_socket = {
-    "/var/run/statsd/statsd.sock",
-    -1,
-    500, // timeout 500ms if no answer
-    0,
-    ""
-};
-
 static StatsConnection statsd_connection = {
     "127.0.0.1",
-    "8125"
+    "8125",
+    -1
 };
 
 bool statsd_connect(void){
 
     struct addrinfo *serverAddr;
-    int rc, error;
+    int rc;
 
-    if (statsd_socket.sock > 0){
+    if (statsd_connection.sock > 0){
         return true;
     }
 
-    error = getaddrinfo(
+    rc = getaddrinfo(
         statsd_connection.ip, statsd_connection.port,
         NULL, &serverAddr);
-    if (error != 0)
+    if (rc != 0)
     {
         LM_ERR(
             "Statsd: could not initiate server information (%s)\n",
-            gai_strerror(error));
+            gai_strerror(rc));
         return false;
     }
 
-    statsd_socket.sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
-    if (statsd_socket.sock == 0 ){
-        LM_ERR("Statsd: could not initiate a connect to statsd\n");
+    statsd_connection.sock = socket(serverAddr->ai_family, SOCK_DGRAM, IPPROTO_UDP);
+    if (statsd_connection.sock < 0 ){
+        LM_ERR("Statsd: could not create a socket for statsd connection\n");
         return false;
     }
 
     rc = connect(
-        statsd_socket.sock, serverAddr->ai_addr, serverAddr->ai_addrlen);
+        statsd_connection.sock, serverAddr->ai_addr, serverAddr->ai_addrlen);
+	freeaddrinfo(serverAddr);
     if (rc < 0){
         LM_ERR("Statsd: could not initiate a connect to statsd\n");
         return false;
@@ -66,7 +60,7 @@ bool send_command(char *command){
         return false;
     }
 
-    send_result = send(statsd_socket.sock, command, strlen(command), 0);
+    send_result = send(statsd_connection.sock, command, strlen(command), 0);
     if ( send_result < 0){
         LM_ERR("could not send the correct info to statsd (%i| %s)\n",
             send_result, strerror(errno));
@@ -128,6 +122,6 @@ bool statsd_init(char *ip, char *port){
 }
 
 bool statsd_destroy(void){
-    statsd_socket.sock = 0;
+    statsd_connection.sock = 0;
     return true;
 }

+ 1 - 8
modules/statsd/lib_statsd.h

@@ -5,16 +5,9 @@
 typedef struct StatsConnection{
     char *ip;
     char *port;
+    int sock;
 } StatsConnection;
 
-typedef struct StatsdSocket {
-    char *name; // name
-    int sock; // socket
-    int timeout; // how many miliseconds to wait for an answer
-    time_t last_failure; // time of the last failure
-    char data[BUFFER_SIZE]; // buffer for the answer data
-} StatsdSocket;
-
 bool statsd_connect(void);
 bool send_command(char *command);
 bool statsd_set(char *key, char *value);