Check the archives. I've answered this a couple of times already.
mysql 5.0.X has modified the default behaviour of how the socket timeout
works. By default, it times out connections after a period of time.
There was a patch after about 5.0.12 to allow people to modify this
behaviour, but the patch didn't work until 5.0.19.
In order to get SER 0.9.X to work with 5.0.19 and above and reconnect
after a timed out socket, you need to modify the my_con.c in
$SER-SRC/modules/mysql and recompile the mysql module.
I've attached a modified my_con.c file that has the correct options to
utilise the patched mysql code. It will fix the reconnect issues
(allowing SER to reconnect once the socket has timed out).
N.
Andrey Kuprianov wrote:
Im also having this problem. I even upgraded SER to
0.9.7-pre8, but
still the same.
I tend to think, though, that this is a MySQL version problem. I
installed MySQL 5.0 from Ubuntu's packages. I think reinstalling MySQL
or just upgrading it (or maybe downgrading to 4.1), should do the
trick.
On 5/24/07, Nhadie <nhadie(a)tbgi.net.ph> wrote:
Hi All
How can i make sure that when mysql dies, ser will not allow calls anymore?
Because i had a problem, when mysql died, ser still continued to allow
calls and i was not able to account it.
How can i resolve this. Thank You in Advance.
Regards
Ronald
_______________________________________________
Serusers mailing list
Serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
_______________________________________________
Serusers mailing list
Serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
/*
* $Id: my_con.c,v 1.2 2004/08/03 17:22:06 janakj Exp $
*
*
* Copyright (C) 2001-2004
iptel.org
*
* This file is part of ser, a free SIP server.
*
* ser is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version
*
* For a license to use the ser software under conditions
* other than those described here, or to purchase support for this
* software, please contact
iptel.org by e-mail at the following addresses:
* info(a)iptel.org
*
* ser is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <string.h>
#include <time.h>
#include "my_con.h"
#include "../../mem/mem.h"
#include "../../dprint.h"
#include "utils.h"
/*
* Create a new connection structure,
* open the MySQL connection and set reference count to 1
*/
struct my_con* new_connection(struct my_id* id)
{
struct my_con* ptr;
my_bool my_true;
my_true=1;
if (!id) {
LOG(L_ERR, "new_connection(): Invalid parameter value\n");
return 0;
}
ptr = (struct my_con*)pkg_malloc(sizeof(struct my_con));
if (!ptr) {
LOG(L_ERR, "new_connection(): No memory left\n");
return 0;
}
memset(ptr, 0, sizeof(struct my_con));
ptr->ref = 1;
ptr->con = (MYSQL*)pkg_malloc(sizeof(MYSQL));
if (!ptr->con) {
LOG(L_ERR, "new_connection(): No enough memory\n");
goto err;
}
mysql_init(ptr->con);
mysql_options(ptr->con, MYSQL_OPT_RECONNECT, &my_true);
if (!mysql_real_connect(ptr->con, id->host.s, id->username.s, id->password.s,
id->database.s, id->port, 0, 0)) {
LOG(L_ERR, "new_connection(): %s\n", mysql_error(ptr->con));
mysql_close(ptr->con);
goto err;
}
ptr->timestamp = time(0);
ptr->id = id;
return ptr;
err:
if (ptr && ptr->con) pkg_free(ptr->con);
if (ptr) pkg_free(ptr);
return 0;
}
/*
* Close the connection and release memory
*/
void free_connection(struct my_con* con)
{
if (!con) return;
if (con->res) mysql_free_result(con->res);
if (con->id) free_my_id(con->id);
if (con->con) {
mysql_close(con->con);
pkg_free(con->con);
}
pkg_free(con);
}