[Serusers] mysql dies -- accounting stopped -- call continues
SIP
sip at arcdiv.com
Thu May 24 14:28:28 CEST 2007
No problem. I've now added this information to the FAQ:
http://www.iptel.org/faq/why_does_my_mysql_5_0_x_connection_time_out_when_using_ser_0_9_x
N.
Andrey Kuprianov wrote:
> Nice! Thanx.
>
> On 5/24/07, SIP <sip at arcdiv.com> wrote:
>
>> 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 at 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 at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
>> _______________________________________________
>>
> Serusers
>
>> mailing
>> list
>>
> Serusers at 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 at 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);
>> }
>>
>>
>>
> _______________________________________________
> Serusers mailing list
> Serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
More information about the sr-users
mailing list