提交 d3758afb authored 作者: Anthony Minessale's avatar Anthony Minessale

fix a few js issues

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3472 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 a85ec77f
...@@ -409,7 +409,7 @@ static void js_error(JSContext *cx, const char *message, JSErrorReport *report) ...@@ -409,7 +409,7 @@ static void js_error(JSContext *cx, const char *message, JSErrorReport *report)
} }
static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_module) static switch_status_t sm_load_file(char *filename)
{ {
sm_loadable_module_t *module = NULL; sm_loadable_module_t *module = NULL;
apr_dso_handle_t *dso = NULL; apr_dso_handle_t *dso = NULL;
...@@ -424,7 +424,6 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m ...@@ -424,7 +424,6 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m
assert(filename != NULL); assert(filename != NULL);
*new_module = NULL;
status = apr_dso_load(&dso, filename, module_manager.pool); status = apr_dso_load(&dso, filename, module_manager.pool);
while (loading) { while (loading) {
...@@ -447,7 +446,7 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m ...@@ -447,7 +446,7 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m
break; break;
} }
if ((module = switch_core_permanent_alloc(sizeof(sm_loadable_module_t))) == 0) { if (!(module = (sm_loadable_module_t *) switch_core_permanent_alloc(sizeof(*module)))) {
err = "Could not allocate memory\n"; err = "Could not allocate memory\n";
break; break;
} }
...@@ -465,11 +464,10 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m ...@@ -465,11 +464,10 @@ static switch_status_t sm_load_file(char *filename, sm_loadable_module_t **new_m
module->module_interface = module_interface; module->module_interface = module_interface;
module->lib = dso; module->lib = dso;
*new_module = module;
switch_core_hash_insert(module_manager.mod_hash, (char *) module->filename, (void *) module); switch_core_hash_insert(module_manager.mod_hash, (char *) module->filename, (void *) module);
for (mp = module_interface; mp; mp = mp->next) { for (mp = module->module_interface; mp; mp = mp->next) {
switch_core_hash_insert(module_manager.load_hash, (char *)mp->name, (void *) mp); switch_core_hash_insert(module_manager.load_hash, (char *)mp->name, (void *) mp);
} }
...@@ -484,7 +482,6 @@ static switch_status_t sm_load_module(char *dir, char *fname) ...@@ -484,7 +482,6 @@ static switch_status_t sm_load_module(char *dir, char *fname)
switch_size_t len = 0; switch_size_t len = 0;
char *path; char *path;
char *file; char *file;
sm_loadable_module_t *new_module = NULL;
#ifdef WIN32 #ifdef WIN32
const char *ext = ".dll"; const char *ext = ".dll";
...@@ -517,7 +514,7 @@ static switch_status_t sm_load_module(char *dir, char *fname) ...@@ -517,7 +514,7 @@ static switch_status_t sm_load_module(char *dir, char *fname)
} }
} }
return sm_load_file(path, &new_module); return sm_load_file(path);
} }
static switch_status_t load_modules(void) static switch_status_t load_modules(void)
...@@ -961,6 +958,13 @@ static JSBool session_streamfile(JSContext *cx, JSObject *obj, uintN argc, jsval ...@@ -961,6 +958,13 @@ static JSBool session_streamfile(JSContext *cx, JSObject *obj, uintN argc, jsval
} }
} }
if (argc > 4) {
int32 samps;
uint32_t pos = 0;
JS_ValueToInt32(cx, argv[4], &samps);
switch_core_file_seek(&fh, &pos, samps, SEEK_CUR);
}
memset(&fh, 0, sizeof(fh)); memset(&fh, 0, sizeof(fh));
cb_state.extra = &fh; cb_state.extra = &fh;
cb_state.ret = BOOLEAN_TO_JSVAL( JS_FALSE ); cb_state.ret = BOOLEAN_TO_JSVAL( JS_FALSE );
...@@ -1214,13 +1218,13 @@ static JSBool session_execute(JSContext *cx, JSObject *obj, uintN argc, jsval *a ...@@ -1214,13 +1218,13 @@ static JSBool session_execute(JSContext *cx, JSObject *obj, uintN argc, jsval *a
char *app_name = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); char *app_name = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
char *app_arg = JS_GetStringBytes(JS_ValueToString(cx, argv[1])); char *app_arg = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
struct js_session *jss = JS_GetPrivate(cx, obj); struct js_session *jss = JS_GetPrivate(cx, obj);
jsrefcount saveDepth; //jsrefcount saveDepth;
if ((application_interface = switch_loadable_module_get_application_interface(app_name))) { if ((application_interface = switch_loadable_module_get_application_interface(app_name))) {
if (application_interface->application_function) { if (application_interface->application_function) {
saveDepth = JS_SuspendRequest(cx); //saveDepth = JS_SuspendRequest(cx);
application_interface->application_function(jss->session, app_arg); application_interface->application_function(jss->session, app_arg);
JS_ResumeRequest(cx, saveDepth); //JS_ResumeRequest(cx, saveDepth);
retval = JS_TRUE; retval = JS_TRUE;
} }
} }
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
*/ */
#include "mod_spidermonkey.h" #include "mod_spidermonkey.h"
static const char modname[] = "DB"; static const char modname[] = "CoreDB";
struct db_obj { struct db_obj {
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
...@@ -148,10 +148,9 @@ static JSBool db_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv ...@@ -148,10 +148,9 @@ static JSBool db_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsv
{ {
struct db_obj *dbo = JS_GetPrivate(cx, obj); struct db_obj *dbo = JS_GetPrivate(cx, obj);
*rval = BOOLEAN_TO_JSVAL( JS_FALSE ); *rval = BOOLEAN_TO_JSVAL( JS_FALSE );
if (dbo->stmt) {
int running = 1;
if (dbo->stmt) {
int running = 1;
while (running < 5000) { while (running < 5000) {
int result = switch_core_db_step(dbo->stmt); int result = switch_core_db_step(dbo->stmt);
if (result == SQLITE_ROW) { if (result == SQLITE_ROW) {
...@@ -210,10 +209,9 @@ static JSBool db_prepare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, ...@@ -210,10 +209,9 @@ static JSBool db_prepare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
dbo->stmt = NULL; dbo->stmt = NULL;
} }
if (argc > 0) { if (argc > 0) {
char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
if(switch_core_db_prepare(dbo->db, sql, -1, &dbo->stmt, 0)) {
if(switch_core_db_prepare(dbo->db, sql, 0, &dbo->stmt, 0)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", switch_core_db_errmsg(dbo->db)); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", switch_core_db_errmsg(dbo->db));
} else { } else {
*rval = BOOLEAN_TO_JSVAL( JS_TRUE ); *rval = BOOLEAN_TO_JSVAL( JS_TRUE );
...@@ -266,18 +264,14 @@ static JSBool db_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) ...@@ -266,18 +264,14 @@ static JSBool db_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
} }
JSClass db_class = { JSClass db_class = {
"DB", JSCLASS_HAS_PRIVATE, modname, JSCLASS_HAS_PRIVATE,
JS_PropertyStub, JS_PropertyStub, db_getProperty, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, db_getProperty, JS_PropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, db_destroy, NULL, NULL, NULL, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, db_destroy, NULL, NULL, NULL,
db_construct db_construct
}; };
switch_status_t db_load(JSContext *cx, JSObject *obj)
switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
{ {
JS_InitClass(cx, JS_InitClass(cx,
...@@ -291,14 +285,13 @@ switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj) ...@@ -291,14 +285,13 @@ switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
db_props, db_props,
db_methods db_methods
); );
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
const sm_module_interface_t DB_module_interface = { const sm_module_interface_t DB_module_interface = {
/*.name = */ modname, /*.name = */ modname,
/*.spidermonkey_load*/ spidermonkey_load, /*.spidermonkey_load*/ db_load,
/*.next*/ NULL /*.next*/ NULL
}; };
......
...@@ -357,7 +357,7 @@ JSClass teletone_class = { ...@@ -357,7 +357,7 @@ JSClass teletone_class = {
}; };
switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj) switch_status_t teletone_load(JSContext *cx, JSObject *obj)
{ {
JS_InitClass(cx, JS_InitClass(cx,
obj, obj,
...@@ -376,7 +376,7 @@ switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj) ...@@ -376,7 +376,7 @@ switch_status_t spidermonkey_load(JSContext *cx, JSObject *obj)
const sm_module_interface_t teletone_module_interface = { const sm_module_interface_t teletone_module_interface = {
/*.name = */ modname, /*.name = */ modname,
/*.spidermonkey_load*/ spidermonkey_load, /*.spidermonkey_load*/ teletone_load,
/*.next*/ NULL /*.next*/ NULL
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论