Merged revisions 89559 via svnmerge from
[asterisk/asterisk.git] / res / res_config_odbc.c
index 2af4720..57b1ba5 100644 (file)
@@ -142,11 +142,12 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl
                return NULL;
        newval = va_arg(aq, const char *);
        op = !strchr(newparam, ' ') ? " =" : "";
-       snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE %s%s ?", table, newparam, op);
+       snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE %s%s ?%s", table, newparam, op,
+               strcasestr(newparam, "LIKE") && !ast_odbc_backslash_is_escape(obj) ? " ESCAPE '\\'" : "");
        while((newparam = va_arg(aq, const char *))) {
                op = !strchr(newparam, ' ') ? " =" : "";
                snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), " AND %s%s ?%s", newparam, op,
-                       strcasestr(newparam, "LIKE") ? " ESCAPE '\\'" : "");
+                       strcasestr(newparam, "LIKE") && !ast_odbc_backslash_is_escape(obj) ? " ESCAPE '\\'" : "");
                newval = va_arg(aq, const char *);
        }
        va_end(aq);
@@ -290,11 +291,11 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
        newval = va_arg(aq, const char *);
        op = !strchr(newparam, ' ') ? " =" : "";
        snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE %s%s ?%s", table, newparam, op,
-               strcasestr(newparam, "LIKE") ? " ESCAPE '\\'" : "");
+               strcasestr(newparam, "LIKE") && !ast_odbc_backslash_is_escape(obj) ? " ESCAPE '\\'" : "");
        while((newparam = va_arg(aq, const char *))) {
                op = !strchr(newparam, ' ') ? " =" : "";
                snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), " AND %s%s ?%s", newparam, op,
-                       strcasestr(newparam, "LIKE") ? " ESCAPE '\\'" : "");
+                       strcasestr(newparam, "LIKE") && !ast_odbc_backslash_is_escape(obj) ? " ESCAPE '\\'" : "");
                newval = va_arg(aq, const char *);
        }
        if (initfield)