<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
I'm not sure what the conclusion to this thread was. <br>
SIP: could you verify your mysql version?<br>
Jan: I haven't seen a ticket on that. Will we say that we don't support
mysql version &gt;=5.0.3 and &lt;5.0.19? <br>
g-)<br>
<br>
Jan Janak wrote:
<blockquote cite="mid:475D4ADA.2000705@iptel.org" type="cite">
  <pre wrap="">Some more information:

mysql_options(ptr-&gt;con, MYSQL_OPT_RECONNECT,(char*)&amp;my_auto_reconnect)

is internally implemented as:

case MYSQL_OPT_RECONNECT:
  mysql-&gt;reconnect= *(my_bool *) arg;
  break;

and that code is already present in 2.0:

if (!mysql_real_connect(ptr-&gt;con, id-&gt;host, id-&gt;username, id-&gt;password,
id-&gt;database, id-&gt;port, 0, 0)) {
        LOG(L_ERR, "new_connection: %s\n", mysql_error(ptr-&gt;con));
        mysql_close(ptr-&gt;con);
        goto err;
    }

/* Enable reconnection explicitly */
ptr-&gt;con-&gt;reconnect = 1;

This is the old way of enabling automatic reconnects in mysql but it
does the same.

   Jan.


Andrei Pelinescu-Onciul wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">On Dec 10, 2007 at 07:20, Greger V. Teigre <a class="moz-txt-link-rfc2396E" href="mailto:greger@teigre.com">&lt;greger@teigre.com&gt;</a> wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">[removed sems and semsdev from cc]


SIP wrote:
      </pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">Secondary (but no less important) items that are a must-have:
-MySQL (I'm voting for 5 series here, but that will require my patch for 
the mysql code in SER 2.0)
   
     
            </pre>
          </blockquote>
          <pre wrap="">why the patch?
 
   
          </pre>
        </blockquote>
        <pre wrap="">MySQL 5.0.X automatically times out its sockets after a hardcoded period 
of time. Unless you have configured the socket to auto reconnect (see 
<a class="moz-txt-link-freetext" href="http://www.ideasip.com/support/utils/my_con.c.SER2">http://www.ideasip.com/support/utils/my_con.c.SER2</a> ), after a little 
while, the socket will just time out and you will have to restart SER in 
order to connect to the database (it will throw errors).
 
        </pre>
      </blockquote>
      <pre wrap="">I thought that issue was resolved. Can you check the tracker ticket and 
verify that it is scheduled for ser 2.0 release?
      </pre>
    </blockquote>
    <pre wrap="">
It is fixed in a different way in 2.1, but it was not backported to 2.0
(see <a class="moz-txt-link-freetext" href="http://lists.iptel.org/pipermail/serdev/2007-June/010460.html">http://lists.iptel.org/pipermail/serdev/2007-June/010460.html</a>).

Jan, have you forgotten to backport it or is there some other reason?

(patch for 2.0  attached)


Andrei


------------------------------------------------------------------------

? modules/mysql/.db_mod.c.swp
Index: modules/mysql/db_mod.c
===================================================================
RCS file: /cvsroot/ser/sip_router/modules/mysql/Attic/db_mod.c,v
retrieving revision 1.29
diff -u -r1.29 db_mod.c
--- modules/mysql/db_mod.c        8 Jan 2006 22:43:17 -0000        1.29
+++ modules/mysql/db_mod.c        22 Jun 2007 14:33:02 -0000
@@ -41,6 +41,14 @@
 
 int ping_interval = 5 * 60; /* Default is 5 minutes */
 int auto_reconnect = 1;     /* Default is enabled */
+unsigned int my_connect_to=2; /* 2 s by default */
+unsigned int my_send_to=0; /*  enabled only for mysql &gt;= 5.25  */
+unsigned int my_recv_to=0; /* enabled only for mysql &gt;= 5.25 */
+
+unsigned long my_client_ver=0;
+
+#define DEFAULT_MY_SEND_TO  2   /* s */
+#define DEFAULT_MY_RECV_TO  4   /* s */
 
 static int mysql_mod_init(void);
 
@@ -71,6 +79,9 @@
 static param_export_t params[] = {
         {"ping_interval", PARAM_INT, &amp;ping_interval},
         {"auto_reconnect", PARAM_INT, &amp;auto_reconnect},
+        {"connect_timeout", PARAM_INT, &amp;my_connect_to},
+        {"send_timeout", PARAM_INT, &amp;my_send_to},
+        {"receive_timeout", PARAM_INT, &amp;my_recv_to},
         {0, 0, 0}
 };
 
@@ -90,6 +101,28 @@
 
 static int mysql_mod_init(void)
 {
+#if MYSQL_VERSION_ID &gt;= 40101
+        my_client_ver=mysql_get_client_version();
+        if ((my_client_ver&gt;=50025) || ((my_client_ver &gt;= 40122) &amp;&amp; 
+                        (my_client_ver &lt; 50000))){
+                if (my_send_to==0)
+                        my_send_to= DEFAULT_MY_SEND_TO;
+                if (my_recv_to==0)
+                        my_recv_to= DEFAULT_MY_RECV_TO;
+        }else if (my_recv_to || my_send_to){
+                LOG(L_WARN, "WARNING: mysql send or received timeout set, but "
+                                " not supported by the installed mysql client library"
+                                " (needed at least 4.1.22 or 5.0.25, but installed %ld)\n",
+                                my_client_ver);
+        }
+#else
+        if (my_recv_to || my_send_to){
+                LOG(L_WARN, "WARNING: mysql send or received timeout set, but "
+                                " not supported by the mysql client library used to compile"
+                                " the mysql module (needed at least 4.1.1 but "
+                                " compiled against %ld)\n", MYSQL_VERSION_ID);
+        }
+#endif
         DBG("mysql: MySQL client version is %s\n", mysql_get_client_info());
         return 0;
 }
Index: modules/mysql/db_mod.h
===================================================================
RCS file: /cvsroot/ser/sip_router/modules/mysql/Attic/db_mod.h,v
retrieving revision 1.3
diff -u -r1.3 db_mod.h
--- modules/mysql/db_mod.h        28 Oct 2004 23:36:14 -0000        1.3
+++ modules/mysql/db_mod.h        22 Jun 2007 14:33:02 -0000
@@ -38,5 +38,10 @@
 
 extern int ping_interval;
 extern int auto_reconnect;
+extern unsigned int my_connect_to; /* 2 s by default */
+extern unsigned int my_send_to; /*  enabled only for mysql &gt;= 5.25  */
+extern unsigned int my_recv_to; /* enabled only for mysql &gt;= 5.25 */
+
+extern unsigned long my_client_ver;
 
 #endif /* DB_MOD_H */
Index: modules/mysql/dbase.c
===================================================================
RCS file: /cvsroot/ser/sip_router/modules/mysql/Attic/dbase.c,v
retrieving revision 1.48.2.1
diff -u -r1.48.2.1 dbase.c
--- modules/mysql/dbase.c        23 Feb 2007 21:19:31 -0000        1.48.2.1
+++ modules/mysql/dbase.c        22 Jun 2007 14:33:02 -0000
@@ -68,7 +68,7 @@
                 t = time(0);
                 if ((t - CON_TIMESTAMP(_h)) &gt; ping_interval) {
                         if (mysql_ping(CON_CONNECTION(_h))) {
-                                DBG("submit_query: mysql_ping failed\n");
+                                ERR("mysql: submit_query: mysql_ping failed\n");
                         }
                 }
                 CON_TIMESTAMP(_h) = t;
Index: modules/mysql/my_con.c
===================================================================
RCS file: /cvsroot/ser/sip_router/modules/mysql/my_con.c,v
retrieving revision 1.7
diff -u -r1.7 my_con.c
--- modules/mysql/my_con.c        30 Jan 2006 16:49:51 -0000        1.7
+++ modules/mysql/my_con.c        22 Jun 2007 14:33:02 -0000
@@ -26,6 +26,7 @@
  */
 
 #include "my_con.h"
+#include "db_mod.h"
 #include "../../mem/mem.h"
 #include "../../dprint.h"
 #include "../../ut.h"
@@ -41,6 +42,9 @@
 struct my_con* new_connection(struct db_id* id)
 {
         struct my_con* ptr;
+#if MYSQL_VERSION_ID &gt;= 50013 
+        my_bool my_auto_reconnect;
+#endif
 
         if (!id) {
                 LOG(L_ERR, "new_connection: Invalid parameter value\n");
@@ -82,6 +86,34 @@
                     ZSW(id-&gt;database)
                     );
         }
+#if MYSQL_VERSION_ID &gt;= 50013 
+        my_auto_reconnect=1;
+        if (my_client_ver&gt;=50013){
+                if (mysql_options(ptr-&gt;con, MYSQL_OPT_RECONNECT , 
+                                        (char*)&amp;my_auto_reconnect))
+                                WARN("mysql: failed to set MYSQL_OPT_RECONNECT\n");
+        }
+#endif
+        if (my_connect_to){
+                if (mysql_options(ptr-&gt;con, MYSQL_OPT_CONNECT_TIMEOUT, 
+                                        (char*)&amp;my_connect_to))
+                                WARN("mysql: failed to set MYSQL_OPT_CONNECT_TIMEOUT\n");
+        }
+#if MYSQL_VERSION_ID &gt;= 40101 
+        if ((my_client_ver&gt;=50025) || ((my_client_ver &gt;= 40122) &amp;&amp; 
+                        (my_client_ver &lt; 50000))){
+                if (my_send_to){
+                        if (mysql_options(ptr-&gt;con, MYSQL_OPT_WRITE_TIMEOUT , 
+                                                (char*)&amp;my_send_to))
+                                WARN("mysql: failed to set MYSQL_OPT_WRITE_TIMEOUT\n");
+                }
+                if (my_recv_to){
+                        if (mysql_options(ptr-&gt;con, MYSQL_OPT_READ_TIMEOUT , 
+                                                (char*)&amp;my_recv_to))
+                                WARN("mysql: failed to set MYSQL_OPT_READ_TIMEOUT\n");
+                }
+        }
+#endif
 
         if (!mysql_real_connect(ptr-&gt;con, id-&gt;host, id-&gt;username, id-&gt;password, id-&gt;database, id-&gt;port, 0, 0)) {
                 LOG(L_ERR, "new_connection: %s\n", mysql_error(ptr-&gt;con));
    </pre>
  </blockquote>
  <pre wrap=""><!---->
_______________________________________________
Serdev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Serdev@lists.iptel.org">Serdev@lists.iptel.org</a>
<a class="moz-txt-link-freetext" href="http://lists.iptel.org/mailman/listinfo/serdev">http://lists.iptel.org/mailman/listinfo/serdev</a>


  </pre>
</blockquote>
</body>
</html>