Changeset

1860:5ef1eea887ca

Merge
author Waqas Hussain <waqas20@gmail.com>
date Fri, 02 Oct 2009 17:14:54 +0500
parents 1859:c965b0accc7c (diff) 1852:f9b58f37bc14 (current diff)
children 1861:e9500c4994f3 1863:51b1612325e6
files util-src/encodings.c
diffstat 2 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_register.lua	Wed Sep 30 11:05:26 2009 +0100
+++ b/plugins/mod_register.lua	Fri Oct 02 17:14:54 2009 +0500
@@ -119,19 +119,18 @@
 				if username and password then
 					-- Check that the user is not blacklisted or registering too often
 					if blacklisted_ips[session.ip] or (whitelist_only and not whitelisted_ips[session.ip]) then
-							session.send(st.error_reply(stanza, "cancel", "not-acceptable"));
-							return;
+						session.send(st.error_reply(stanza, "cancel", "not-acceptable", "You are not allowed to register an account."));
+						return;
 					elseif min_seconds_between_registrations and not whitelisted_ips[session.ip] then
 						if not recent_ips[session.ip] then
 							recent_ips[session.ip] = { time = os_time(), count = 1 };
 						else
-						
 							local ip = recent_ips[session.ip];
 							ip.count = ip.count + 1;
 							
 							if os_time() - ip.time < min_seconds_between_registrations then
 								ip.time = os_time();
-								session.send(st.error_reply(stanza, "cancel", "not-acceptable"));
+								session.send(st.error_reply(stanza, "wait", "not-acceptable"));
 								return;
 							end
 							ip.time = os_time();
@@ -140,18 +139,21 @@
 					-- FIXME shouldn't use table.concat
 					username = nodeprep(table.concat(username));
 					password = table.concat(password);
-					if usermanager_user_exists(username, session.host) then
-						session.send(st.error_reply(stanza, "cancel", "conflict"));
+					local host = module.host;
+					if not username then
+						session.send(st.error_reply(stanza, "modify", "not-acceptable", "The requested username is invalid."));
+					elseif usermanager_user_exists(username, host) then
+						session.send(st.error_reply(stanza, "cancel", "conflict", "The requested username already exists."));
 					else
-						if usermanager_create_user(username, password, session.host) then
+						if usermanager_create_user(username, password, host) then
 							session.send(st.reply(stanza)); -- user created!
-							module:log("info", "User account created: %s@%s", username, session.host);
+							module:log("info", "User account created: %s@%s", username, host);
 							module:fire_event("user-registered", { 
-								username = username, host = session.host, source = "mod_register",
+								username = username, host = host, source = "mod_register",
 								session = session });
 						else
 							-- TODO unable to write file, file may be locked, etc, what's the correct error?
-							session.send(st.error_reply(stanza, "wait", "internal-server-error"));
+							session.send(st.error_reply(stanza, "wait", "internal-server-error", "Failed to write data to disk."));
 						end
 					end
 				else
--- a/util-src/encodings.c	Wed Sep 30 11:05:26 2009 +0100
+++ b/util-src/encodings.c	Fri Oct 02 17:14:54 2009 +0500
@@ -108,7 +108,6 @@
 				break;
 		}
 	}
-	return 0;
 }
 
 static const luaL_Reg Reg_base64[] =
@@ -124,14 +123,15 @@
 
 static int stringprep_prep(lua_State *L, const Stringprep_profile *profile)
 {
+	size_t len;
+	const char *s;
+	char string[1024];
+	int ret;
 	if(!lua_isstring(L, 1)) {
 		lua_pushnil(L);
 		return 1;
 	}
-	size_t len;
-	const char *s = lua_tolstring(L, 1, &len);
-	char string[1024];
-	int ret;
+	s = lua_tolstring(L, 1, &len);
 	if (len >= 1024) {
 		lua_pushnil(L);
 		return 1; // TODO return error message
@@ -167,6 +167,7 @@
 /***************** IDNA *****************/
 
 #include <idna.h>
+#include <idn-free.h>
 
 static int Lidna_to_ascii(lua_State *L)		/** idna.to_ascii(s) */
 {