Index: /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java	(revision 1406)
+++ /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java	(revision 1407)
@@ -241,82 +241,69 @@
 			ur = new UploadResponse(UploadResponse.EN_ERROR);
 			ur.setCustomMessage(UploadResponse.CM_HTTP_400);
-			// printResponse(out, ur);
-			// return;
-		} else if (!commandStr.matches("(File|Quick)Upload")) //{
-				ur = UploadResponse.UR_SECURITY_ERROR;
-				// printResponse(out, ur);
-				// return;
-			/*}*/ else {
-
-				String currentPath = constructTypeBasedFolderString(typeStr,
-						currentFolderStr);
-				String currentDirPath = getServletContext().getRealPath(
-						currentPath);
-
-				// TODO Test this if clause
-				if (!isValidPath(currentFolderStr)
-						|| !(new File(currentDirPath).exists())) {
+		} else if (!commandStr.matches("(File|Quick)Upload"))
+			ur = UploadResponse.UR_SECURITY_ERROR;
+		else {
+
+			String currentPath = constructTypeBasedFolderString(typeStr,
+					currentFolderStr);
+			String currentDirPath = getServletContext()
+					.getRealPath(currentPath);
+
+			if (!isValidPath(currentFolderStr)
+					|| !(new File(currentDirPath).exists())) {
+				ur = new UploadResponse(UploadResponse.EN_ERROR);
+				ur.setCustomMessage(UploadResponse.CM_HTTP_400);
+			} else {
+
+				String newFilename = null;
+				FileItemFactory factory = new DiskFileItemFactory();
+				ServletFileUpload upload = new ServletFileUpload(factory);
+				try {
+					List<FileItem> items = (List<FileItem>) upload
+							.parseRequest(request);
+
+					// We upload only one file at the same time
+					FileItem uplFile = items.get(0);
+					String filename = FilenameUtils.getName(uplFile.getName());
+					String baseName = FilenameUtils.removeExtension(filename);
+					String extension = FilenameUtils.getExtension(filename);
+
+					boolean validExtension = ExtensionsHandler.isAllowed(
+							typeStr, extension);
+
+					if (!validExtension)
+						ur = UploadResponse.UR_INVALID_EXTENSION;
+					else {
+
+						// TODO check if forceSingleExtension is enabled
+						if (false) {
+							filename = forceSingleExtension(filename);
+							baseName = FilenameUtils.removeExtension(filename);
+						}
+
+						File pathToSave = new File(currentDirPath, filename);
+						int counter = 1;
+						while (pathToSave.exists()) {
+							newFilename = baseName + "(" + counter + ")" + "."
+									+ extension;
+							pathToSave = new File(currentDirPath, newFilename);
+							counter++;
+						}
+
+						uplFile.write(pathToSave);
+						if (isEmpty(newFilename)) {
+							ur = new UploadResponse(UploadResponse.EN_OK,request.getContextPath()+currentPath+filename);
+						} else {
+							ur = new UploadResponse(UploadResponse.EN_RENAMED,request.getContextPath()+currentPath+newFilename,newFilename);
+						}
+					}
+				} catch (FileUploadException ex) {
 					ur = new UploadResponse(UploadResponse.EN_ERROR);
 					ur.setCustomMessage(UploadResponse.CM_HTTP_400);
-					// printResponse(out, ur);
-					// return;
-				} else {
-
-					String newFilename = "";
-					FileItemFactory factory = new DiskFileItemFactory();
-					ServletFileUpload upload = new ServletFileUpload(factory);
-					try {
-						List<FileItem> items = (List<FileItem>) upload
-								.parseRequest(request);
-
-						// We upload only one file at the same time
-						FileItem uplFile = items.get(0);
-						String filename = FilenameUtils.getName(uplFile
-								.getName());
-						String baseName = FilenameUtils
-								.removeExtension(filename);
-						String extension = FilenameUtils.getExtension(filename);
-
-						boolean validExtension = ExtensionsHandler.isAllowed(
-								typeStr, extension);
-
-						if (!validExtension)
-							ur = UploadResponse.UR_INVALID_EXTENSION;
-						else {
-
-							// TODO check if forceSingleExtension is enabled
-							if (false) {
-								filename = forceSingleExtension(filename);
-								baseName = FilenameUtils
-										.removeExtension(filename);
-							}
-
-							File pathToSave = new File(currentDirPath, filename);
-							int counter = 1;
-							while (pathToSave.exists()) {
-								newFilename = baseName + "(" + counter + ")"
-										+ "." + extension;
-								pathToSave = new File(currentDirPath,
-										newFilename);
-								counter++;
-							}
-
-							uplFile.write(pathToSave);
-							if (isEmpty(newFilename))
-								ur = UploadResponse.UR_OK;
-							else {
-								ur = new UploadResponse(
-										UploadResponse.EN_RENAMED);
-								ur.setFilename(newFilename);
-							}
-						}
-					} catch (FileUploadException ex) {
-						ur = new UploadResponse(UploadResponse.EN_ERROR);
-						ur.setCustomMessage(UploadResponse.CM_HTTP_400);
-					} catch (Exception e) {
-						ur = UploadResponse.UR_SECURITY_ERROR;
-					}
+				} catch (Exception e) {
+					ur = UploadResponse.UR_SECURITY_ERROR;
 				}
 			}
+		}
 		out.print(ur);
 		out.flush();
Index: /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/UploadResponse.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/UploadResponse.java	(revision 1406)
+++ /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/UploadResponse.java	(revision 1407)
@@ -17,5 +17,5 @@
 	public static final String CM_HTTP_400 = "400 Bad request";
 	
-	public static final UploadResponse UR_OK = new UploadResponse(EN_OK);
+	//public static final UploadResponse UR_OK = new UploadResponse(EN_OK);
 	public static final UploadResponse UR_INVALID_EXTENSION = new UploadResponse(EN_INVALID_EXTENSION);
 	public static final UploadResponse UR_SECURITY_ERROR = new UploadResponse(EN_SECURITY_ERROR);
@@ -27,7 +27,22 @@
 		parameters.put("errorNumber", String.valueOf(errorNumber));
 		parameters.put("fileUrl", fileUrl);
-		parameters.put("fileyname", filename);
+		parameters.put("filename", filename);
 		parameters.put("customMessage", customMessage);
 	}
+	
+	public UploadResponse(int errorNumber, String fileUrl, String filename) {
+		parameters = new LinkedHashMap<String, String>(3);
+		parameters.put("errorNumber", String.valueOf(errorNumber));
+		parameters.put("fileUrl", fileUrl);
+		parameters.put("filename", filename);
+	}
+	
+	public UploadResponse(int errorNumber, String fileUrl) {
+		parameters = new LinkedHashMap<String, String>(2);
+		parameters.put("errorNumber", String.valueOf(errorNumber));
+		parameters.put("fileUrl", fileUrl);
+	}
+	
+	
 
 	public UploadResponse(int errorNumber) {
@@ -82,4 +97,7 @@
 					sb.append("'");
 					}
+				} else {
+					sb.append("'");
+					sb.append("'");
 				}
 				sb.append(",");
Index: /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java	(revision 1406)
+++ /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java	(revision 1407)
@@ -140,4 +140,7 @@
 			return false;
 		
+		if (!path.endsWith("/"))
+			return false;
+		
 		if (isEmpty(FilenameUtils.normalize(path)))
 			return false;
Index: /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java	(revision 1406)
+++ /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java	(revision 1407)
@@ -186,5 +186,5 @@
 	@Test
 	public void isValidPath07() {
-		String path = "/my/stuff/..";
+		String path = "/my/stuff/../";
 		boolean condition = !Utils.isValidPath(path);
 		assertTrue(condition);
