Browse Source

app_lua: helper function to return error code

Daniel-Constantin Mierla 14 years ago
parent
commit
b457031210

+ 9 - 0
modules/app_lua/app_lua_api.c

@@ -280,6 +280,15 @@ int app_lua_return_int(lua_State *L, int v)
 	return 1;
 	return 1;
 }
 }
 
 
+/**
+ *
+ */
+int app_lua_return_error(lua_State *L)
+{
+	lua_pushinteger(L, -1);
+	return 1;
+}
+
 /**
 /**
  *
  *
  */
  */

+ 1 - 0
modules/app_lua/app_lua_api.h

@@ -61,6 +61,7 @@ int app_lua_return_boolean(lua_State *L, int b);
 int app_lua_return_false(lua_State *L);
 int app_lua_return_false(lua_State *L);
 int app_lua_return_true(lua_State *L);
 int app_lua_return_true(lua_State *L);
 int app_lua_return_int(lua_State *L, int v);
 int app_lua_return_int(lua_State *L, int v);
+int app_lua_return_error(lua_State *L);
 
 
 void app_lua_dump_stack(lua_State *L);
 void app_lua_dump_stack(lua_State *L);
 
 

+ 60 - 81
modules/app_lua/app_lua_exp.c

@@ -110,27 +110,21 @@ static int lua_sr_sl_send_reply (lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SL))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SL))
 	{
 	{
 		LM_WARN("weird: sl function executed but module not registered\n");
 		LM_WARN("weird: sl function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 
 
 	code = lua_tointeger(L, -2);
 	code = lua_tointeger(L, -2);
 
 
 	if(code<100 || code>=800)
 	if(code<100 || code>=800)
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	
 	
 	txt.s = (char*)lua_tostring(L, -1);
 	txt.s = (char*)lua_tostring(L, -1);
-	if(txt.s!=NULL && env_L->msg!=NULL)
-	{
-		txt.len = strlen(txt.s);
-		ret = _lua_slb.freply(env_L->msg, code, &txt);
-		if(ret<0)
-		{
-			LM_WARN("sl send_reply returned false\n");
-			return app_lua_return_false(L);
-		}
-		return app_lua_return_true(L);
-	}
-	return app_lua_return_false(L);
+	if(txt.s==NULL || env_L->msg==NULL)
+		return app_lua_return_error(L);
+
+	txt.len = strlen(txt.s);
+	ret = _lua_slb.freply(env_L->msg, code, &txt);
+	return app_lua_return_int(L, ret);
 }
 }
 
 
 /**
 /**
@@ -183,27 +177,21 @@ static int lua_sr_tm_t_reply(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_TM))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_TM))
 	{
 	{
 		LM_WARN("weird: tm function executed but module not registered\n");
 		LM_WARN("weird: tm function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 
 
 	code = lua_tointeger(L, -2);
 	code = lua_tointeger(L, -2);
 
 
 	if(code<100 || code>=800)
 	if(code<100 || code>=800)
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 
 
 	txt = (char*)lua_tostring(L, -1);
 	txt = (char*)lua_tostring(L, -1);
 	if(txt!=NULL && env_L->msg!=NULL)
 	if(txt!=NULL && env_L->msg!=NULL)
 	{
 	{
 		ret = _lua_tmb.t_reply(env_L->msg, code, txt);
 		ret = _lua_tmb.t_reply(env_L->msg, code, txt);
-		if(ret<0)
-		{
-			LM_WARN("tm t_reply returned false\n");
-			/* shall push FALSE to Lua ?!? */
-			return app_lua_return_false(L);
-		}
-		return app_lua_return_true(L);
+		return app_lua_return_int(L, ret);
 	}
 	}
-	return app_lua_return_false(L);
+	return app_lua_return_error(L);
 }
 }
 
 
 /**
 /**
@@ -219,15 +207,10 @@ static int lua_sr_tm_t_relay(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_TM))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_TM))
 	{
 	{
 		LM_WARN("weird: tm function executed but module not registered\n");
 		LM_WARN("weird: tm function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_tmb.t_relay(env_L->msg, NULL, NULL);
 	ret = _lua_tmb.t_relay(env_L->msg, NULL, NULL);
-	if(ret<0)
-	{
-		LM_WARN("tm t_relay returned false\n");
-		return app_lua_return_false(L);
-	}
-	return app_lua_return_true(L);
+	return app_lua_return_int(L, ret);
 }
 }
 
 
 
 
@@ -249,11 +232,12 @@ static int lua_sr_sqlops_query(lua_State *L)
 	str scon;
 	str scon;
 	str squery;
 	str squery;
 	str sres;
 	str sres;
+	int ret;
 
 
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SQLOPS))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SQLOPS))
 	{
 	{
 		LM_WARN("weird: sqlops function executed but module not registered\n");
 		LM_WARN("weird: sqlops function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 
 
 	scon.s = (char*)lua_tostring(L, -3);
 	scon.s = (char*)lua_tostring(L, -3);
@@ -262,15 +246,14 @@ static int lua_sr_sqlops_query(lua_State *L)
 	if(scon.s == NULL || squery.s == NULL || sres.s == NULL)
 	if(scon.s == NULL || squery.s == NULL || sres.s == NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	scon.len = strlen(scon.s);
 	scon.len = strlen(scon.s);
 	squery.len = strlen(squery.s);
 	squery.len = strlen(squery.s);
 	sres.len = strlen(sres.s);
 	sres.len = strlen(sres.s);
 
 
-	if(_lua_sqlopsb.query(&scon, &squery, &sres)<0)
-		return app_lua_return_false(L);
-	return app_lua_return_true(L);
+	ret = _lua_sqlopsb.query(&scon, &squery, &sres);
+	return app_lua_return_int(L, ret);
 }
 }
 
 
 /**
 /**
@@ -476,12 +459,12 @@ static int lua_sr_rr_record_route(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_RR))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_RR))
 	{
 	{
 		LM_WARN("weird: rr function executed but module not registered\n");
 		LM_WARN("weird: rr function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)==1)
 	if(lua_gettop(L)==1)
 	{
 	{
@@ -491,9 +474,7 @@ static int lua_sr_rr_record_route(lua_State *L)
 	}
 	}
 	ret = _lua_rrb.record_route(env_L->msg, (sv.len>0)?&sv:NULL);
 	ret = _lua_rrb.record_route(env_L->msg, (sv.len>0)?&sv:NULL);
 
 
-	if(ret<0)
-		return app_lua_return_false(L);
-	return app_lua_return_true(L);
+	return app_lua_return_int(L, ret);
 }
 }
 
 
 /**
 /**
@@ -509,18 +490,16 @@ static int lua_sr_rr_loose_route(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_RR))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_RR))
 	{
 	{
 		LM_WARN("weird: rr function executed but module not registered\n");
 		LM_WARN("weird: rr function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_rrb.loose_route(env_L->msg);
 	ret = _lua_rrb.loose_route(env_L->msg);
 
 
-	if(ret<0)
-		return app_lua_return_false(L);
-	return app_lua_return_true(L);
+	return app_lua_return_int(L, ret);
 }
 }
 
 
 /**
 /**
@@ -545,24 +524,24 @@ static int lua_sr_auth_challenge(lua_State *L, int hftype)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	{
 	{
 		LM_WARN("weird: auth function executed but module not registered\n");
 		LM_WARN("weird: auth function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)!=2)
 	if(lua_gettop(L)!=2)
 	{
 	{
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.s = (char*)lua_tostring(L, -2);
 	realm.s = (char*)lua_tostring(L, -2);
 	flags   = lua_tointeger(L, -1);
 	flags   = lua_tointeger(L, -1);
 	if(flags<0 || realm.s==NULL)
 	if(flags<0 || realm.s==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.len = strlen(realm.s);
 	realm.len = strlen(realm.s);
 	ret = _lua_authb.auth_challenge(env_L->msg, &realm, flags, hftype);
 	ret = _lua_authb.auth_challenge(env_L->msg, &realm, flags, hftype);
@@ -602,17 +581,17 @@ static int lua_sr_auth_pv_authenticate(lua_State *L, int hftype)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	{
 	{
 		LM_WARN("weird: auth function executed but module not registered\n");
 		LM_WARN("weird: auth function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)!=3)
 	if(lua_gettop(L)!=3)
 	{
 	{
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.s  = (char*)lua_tostring(L, -3);
 	realm.s  = (char*)lua_tostring(L, -3);
 	passwd.s = (char*)lua_tostring(L, -2);
 	passwd.s = (char*)lua_tostring(L, -2);
@@ -620,7 +599,7 @@ static int lua_sr_auth_pv_authenticate(lua_State *L, int hftype)
 	if(flags<0 || realm.s==NULL || passwd.s==NULL)
 	if(flags<0 || realm.s==NULL || passwd.s==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.len = strlen(realm.s);
 	realm.len = strlen(realm.s);
 	passwd.len = strlen(passwd.s);
 	passwd.len = strlen(passwd.s);
@@ -659,12 +638,12 @@ static int lua_sr_auth_consume_credentials(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH))
 	{
 	{
 		LM_WARN("weird: auth function executed but module not registered\n");
 		LM_WARN("weird: auth function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_authb.consume_credentials(env_L->msg);
 	ret = _lua_authb.consume_credentials(env_L->msg);
 
 
@@ -699,24 +678,24 @@ static int lua_sr_auth_db_authenticate(lua_State *L, hdr_types_t hftype)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH_DB))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_AUTH_DB))
 	{
 	{
 		LM_WARN("weird: auth function executed but module not registered\n");
 		LM_WARN("weird: auth function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)!=2)
 	if(lua_gettop(L)!=2)
 	{
 	{
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.s  = (char*)lua_tostring(L, -2);
 	realm.s  = (char*)lua_tostring(L, -2);
 	table.s  = (char*)lua_tostring(L, -1);
 	table.s  = (char*)lua_tostring(L, -1);
 	if(realm.s==NULL || table.s==NULL)
 	if(realm.s==NULL || table.s==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	realm.len = strlen(realm.s);
 	realm.len = strlen(realm.s);
 	table.len = strlen(table.s);
 	table.len = strlen(table.s);
@@ -766,23 +745,23 @@ static int lua_sr_maxfwd_process_maxfwd(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	{
 	{
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)!=1)
 	if(lua_gettop(L)!=1)
 	{
 	{
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	limit = lua_tointeger(L, -1);
 	limit = lua_tointeger(L, -1);
 	if(limit<0)
 	if(limit<0)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_maxfwdb.process_maxfwd(env_L->msg, limit);
 	ret = _lua_maxfwdb.process_maxfwd(env_L->msg, limit);
 
 
@@ -815,12 +794,12 @@ static int lua_sr_registrar_save(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	{
 	{
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)==1)
 	if(lua_gettop(L)==1)
 	{
 	{
@@ -830,12 +809,12 @@ static int lua_sr_registrar_save(lua_State *L)
 		flags = lua_tointeger(L, -1);
 		flags = lua_tointeger(L, -1);
 	} else {
 	} else {
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(table==NULL || strlen(table)==0)
 	if(table==NULL || strlen(table)==0)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_registrarb.save(env_L->msg, table, flags);
 	ret = _lua_registrarb.save(env_L->msg, table, flags);
 
 
@@ -856,23 +835,23 @@ static int lua_sr_registrar_lookup(lua_State *L)
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_MAXFWD))
 	{
 	{
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
 		LM_WARN("weird: maxfwd function executed but module not registered\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
-	if(env_L->msg!=NULL)
+	if(env_L->msg==NULL)
 	{
 	{
 		LM_WARN("invalid parameters from Lua env\n");
 		LM_WARN("invalid parameters from Lua env\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	if(lua_gettop(L)!=1)
 	if(lua_gettop(L)!=1)
 	{
 	{
 		LM_WARN("invalid number of parameters from Lua\n");
 		LM_WARN("invalid number of parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	table  = (char*)lua_tostring(L, -1);
 	table  = (char*)lua_tostring(L, -1);
 	if(table==NULL || strlen(table)==0)
 	if(table==NULL || strlen(table)==0)
 	{
 	{
 		LM_WARN("invalid parameters from Lua\n");
 		LM_WARN("invalid parameters from Lua\n");
-		return app_lua_return_false(L);
+		return app_lua_return_error(L);
 	}
 	}
 	ret = _lua_registrarb.lookup(env_L->msg, table);
 	ret = _lua_registrarb.lookup(env_L->msg, table);
 
 

+ 1 - 1
modules/app_lua/app_lua_sr.c

@@ -629,7 +629,7 @@ static int lua_sr_pv_is_null (lua_State *L)
 		return 0;
 		return 0;
 
 
 	pvn.len = strlen(pvn.s);
 	pvn.len = strlen(pvn.s);
-	LM_DBG("pv is null: %s\n", pvn.s);
+	LM_DBG("pv is null test: %s\n", pvn.s);
 	if(pv_parse_spec(&pvn, &pvs)<0)
 	if(pv_parse_spec(&pvn, &pvs)<0)
 	{
 	{
 		LM_ERR("unable to parse pv [%s]\n", pvn.s);
 		LM_ERR("unable to parse pv [%s]\n", pvn.s);