Index: chan_sip.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v retrieving revision 1.508 diff -u -r1.508 chan_sip.c --- chan_sip.c 16 Sep 2004 18:45:34 -0000 1.508 +++ chan_sip.c 17 Sep 2004 08:18:32 -0000 @@ -117,6 +117,7 @@ static char mydbpass[80]; static char mydbhost[80]; static char mydbname[80]; +static int mydbfriends = 0; #endif /* SIP Debug */ @@ -1025,7 +1026,7 @@ mysql_real_escape_string(mysql, name, user, strlen(user)); } - snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, callerid, restrictcid FROM sipfriends WHERE name=\"%s\"", name); + snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds, callerid, restrictcid FROM sipfriends WHERE name='%s'", name); ast_mutex_lock(&mysqllock); mysql_query(mysql, query); @@ -1093,12 +1094,11 @@ time(&nowtime); mysql_real_escape_string(mysql, name, peer, strlen(peer)); mysql_real_escape_string(mysql, uname, username, strlen(username)); - snprintf(query, sizeof(query), "UPDATE sipfriends SET ipaddr=\"%s\", port=\"%d\", regseconds=\"%ld\", username=\"%s\" WHERE name=\"%s\"", + snprintf(query, sizeof(query), "UPDATE sipfriends SET ipaddr='%s', port='%d', regseconds='%ld', username='%s' WHERE name='%s'", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port), nowtime + expiry, uname, name); ast_mutex_lock(&mysqllock); if (mysql_real_query(mysql, query, strlen(query))) - ast_log(LOG_WARNING, "Unable to update database\n"); - + ast_log(LOG_WARNING, "Unable to update database (%s)\n",query); ast_mutex_unlock(&mysqllock); } } @@ -1125,10 +1125,11 @@ name = alloca(strlen(peer) * 2 + 1); mysql_real_escape_string(mysql, name, peer, strlen(peer)); } - if (sin) - snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE ipaddr=\"%s\" AND port=\"%d\"", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port)); - else - snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE name=\"%s\"", name); + if (sin) { + snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE ipaddr='%s' AND port='%d'", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), ntohs(sin->sin_port)); + } else { + snprintf(query, sizeof(query), "SELECT name, secret, context, username, ipaddr, port, regseconds FROM sipfriends WHERE name='%s'", name); + } ast_mutex_lock(&mysqllock); mysql_query(mysql, query); if ((result = mysql_store_result(mysql))) { @@ -1191,7 +1192,7 @@ static void update_peer(struct sip_peer *p, int expiry) { #ifdef MYSQL_FRIENDS - if (p->temponly) + if (mydbfriends && p->temponly) mysql_update_peer(p->name, &p->addr, p->username, expiry); #endif return; @@ -1225,7 +1226,7 @@ } #ifdef MYSQL_FRIENDS - if (!p) { + if (mydbfriends && !p) { p = mysql_peer(peer, sin); } #endif @@ -6139,7 +6140,7 @@ break; ast_mutex_unlock(&peerl.lock); #ifdef MYSQL_FRIENDS - if (!peer) + if (mydbfriends && !peer) peer = mysql_peer(argv[3], NULL); #endif if (peer) { @@ -8632,6 +8633,9 @@ strncpy(mydbhost, v->value, sizeof(mydbhost) - 1); } else if (!strcasecmp(v->name, "dbname")) { strncpy(mydbname, v->value, sizeof(mydbname) - 1); + } else if (!strcasecmp(v->name, "mysqlsipfriends")) { + if (!strcasecmp(v->value, "yes")) + mydbfriends = 1; #endif } /* else if (strcasecmp(v->name,"type")) @@ -8725,7 +8729,7 @@ ast_destroy(cfg); #ifdef MYSQL_FRIENDS /* Connect to db if appropriate */ - if (!mysql && !ast_strlen_zero(mydbname)) { + if (mydbfriends && !mysql && !ast_strlen_zero(mydbname)) { mysql = mysql_init(NULL); if (!mysql_real_connect(mysql, mydbhost[0] ? mydbhost : NULL, mydbuser, mydbpass, mydbname, 0, NULL, 0)) { memset(mydbpass, '*', strlen(mydbpass));