summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheng-Han, Wu2016-01-20 23:20:50 -0600
committerCheng-Han, Wu2016-01-20 23:20:50 -0600
commit16dcd27b780fe47ceffa43678ae0aec3fbf735c7 (patch)
tree5f6ba161f3c04343dd33f6b59389ea665a2c7575
parent50805f35408aa5bf28659bb403d1d3456286708f (diff)
Fixed potential bug in realtime startConnection and bugs in note findOrNewNote, response showNote
-rw-r--r--lib/note.js8
-rw-r--r--lib/realtime.js7
-rw-r--r--lib/response.js10
3 files changed, 16 insertions, 9 deletions
diff --git a/lib/note.js b/lib/note.js
index cd3816f9..a73d2d1d 100644
--- a/lib/note.js
+++ b/lib/note.js
@@ -148,10 +148,10 @@ function newNote(id, owner, callback) {
});
}
-function findOrNewNote(id, permission, callback) {
+function findOrNewNote(id, owner, callback) {
findNote(id, function (err, note) {
if (err || !note) {
- newNote(id, permission, function (err, note) {
+ newNote(id, owner, function (err, note) {
if (err) {
logger.error('find or new note failed: ' + err);
callback(err, null);
@@ -161,6 +161,10 @@ function findOrNewNote(id, permission, callback) {
});
} else {
if (!note.permission) {
+ var permission = "freely";
+ if (owner && owner != "null") {
+ permission = "editable";
+ }
note.permission = permission;
note.updated = Date.now();
note.save(function (err) {
diff --git a/lib/realtime.js b/lib/realtime.js
index d0db6072..a732711a 100644
--- a/lib/realtime.js
+++ b/lib/realtime.js
@@ -394,10 +394,13 @@ function startConnection(socket) {
//find or new note
Note.findOrNewNote(notename, owner, function (err, note) {
if (err) {
- responseError(res, "404", "Not Found", "oops.");
+ socket.emit('info', {
+ code: 404
+ });
+ socket.disconnect(true);
clearSocketQueue(connectionSocketQueue, socket);
isConnectionBusy = false;
- return;
+ return logger.error(err);
}
var body = LZString.decompressFromBase64(data.rows[0].content);
diff --git a/lib/response.js b/lib/response.js
index e27411c8..e656d550 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -175,15 +175,15 @@ function showNote(req, res, next) {
return response.errorNotFound(res);
}
}
- Note.findNote(noteId, function (err, note) {
- if (err || !note) {
+ db.readFromDB(noteId, function (err, data) {
+ if (err) {
return response.errorNotFound(res);
}
- db.readFromDB(note.id, function (err, data) {
- if (err) {
+ var notedata = data.rows[0];
+ Note.findOrNewNote(noteId, notedata.owner, function (err, note) {
+ if (err || !note) {
return response.errorNotFound(res);
}
- var notedata = data.rows[0];
//check view permission
if (note.permission == 'private') {
if (!req.isAuthenticated() || notedata.owner != req.user._id)