@ -287,6 +287,20 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl
}
stringp = ast_str_buffer ( rowdata ) ;
if ( ! strncmp ( coltitle , " @ " , 1 ) ) {
/* The '@' prefix indicates it's a sorcery extended field.
* Because ast_load_realtime_fields eliminates empty entries and makes blank ( single whitespace )
* entries empty and keeps them , the empty or NULL values are encoded
* as a string containing a single whitespace . */
if ( prev ) {
prev - > next = ast_variable_new ( coltitle , S_OR ( stringp , " " ) , " " ) ;
if ( prev - > next ) {
prev = prev - > next ;
}
} else {
prev = var = ast_variable_new ( coltitle , S_OR ( stringp , " " ) , " " ) ;
}
} else {
while ( stringp ) {
chunk = strsep ( & stringp , " ; " ) ;
if ( ! ast_strlen_zero ( ast_strip ( chunk ) ) ) {
@ -304,6 +318,7 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl
}
}
}
}
SQLFreeHandle ( SQL_HANDLE_STMT , stmt ) ;
ast_odbc_release_obj ( obj ) ;
@ -451,6 +466,14 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
goto next_sql_fetch ;
}
stringp = ast_str_buffer ( rowdata ) ;
if ( ! strncmp ( coltitle , " @ " , 1 ) ) {
/* The '@' prefix indicates it's a sorcery extended field.
* Because ast_load_realtime_fields eliminates empty entries and makes blank ( single whitespace )
* entries empty and keeps them , the empty or NULL values are encoded
* as a string containing a single whitespace . */
var = ast_variable_new ( coltitle , S_OR ( stringp , " " ) , " " ) ;
ast_variable_append ( cat , var ) ;
} else {
while ( stringp ) {
chunk = strsep ( & stringp , " ; " ) ;
if ( ! ast_strlen_zero ( ast_strip ( chunk ) ) ) {
@ -465,6 +488,7 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
}
}
}
}
ast_category_append ( cfg , cat ) ;
next_sql_fetch : ;
}