Merged upstream changes

fork
Andrew Jessup 12 years ago
commit 0d161f72fd

@ -1,5 +1,6 @@
var util = require('util'), net = require('net'),
tls = require('tls'), EventEmitter = require('events').EventEmitter;
tls = require('tls'), EventEmitter = require('events').EventEmitter,
Socket = net.Socket;
var emptyFn = function() {}, CRLF = '\r\n', debug=emptyFn,
STATES = {
NOCONNECT: 0,
@ -68,9 +69,6 @@ function ImapConnection (options) {
util.inherits(ImapConnection, EventEmitter);
exports.ImapConnection = ImapConnection;
/* Namespace for seqno-based commands */
ImapConnection.prototype.seq = {};
ImapConnection.prototype.connect = function(loginCb) {
var self = this,
fnInit = function() {
@ -100,10 +98,7 @@ ImapConnection.prototype.connect = function(loginCb) {
loginCb = loginCb || emptyFn;
this._reset();
this._state.conn = net.createConnection(this._options.port, this._options.host);
this._state.tmrConn = setTimeout(this._fnTmrConn.bind(this),
this._options.connTimeout, loginCb);
this._state.conn = new Socket();
this._state.conn.setKeepAlive(true);
if (this._options.secure) {
@ -510,6 +505,10 @@ ImapConnection.prototype.connect = function(loginCb) {
debug('Connection forcefully closed.');
self.emit('close', had_error);
});
this._state.conn.connect(this._options.port, this._options.host);
this._state.tmrConn = setTimeout(this._fnTmrConn.bind(this),
this._options.connTimeout, loginCb);
};
ImapConnection.prototype.isAuthenticated = function() {
@ -602,9 +601,6 @@ ImapConnection.prototype.renameBox = function(oldname, newname, cb) {
this._send('RENAME "' + escape(oldname) + '" "' + escape(newname) + '"', cb);
};
ImapConnection.prototype.seq.search = function(options, cb) {
this._search('', options, cb);
};
ImapConnection.prototype.search = function(options, cb) {
this._search('UID ', options, cb);
};
@ -641,10 +637,6 @@ ImapConnection.prototype.append = function(mimedata, flags, date, cb) {
cmd += '{'+mimedata.length+"}\r\n" + mimedata;
this._send(cmd, cb);
}
ImapConnection.prototype.fetch_seq = function(seqnos, options) {
return this._fetch('', seqnos, options);
};
ImapConnection.prototype.fetch = function(uids, options) {
return this._fetch('UID ', uids, options);
};
@ -716,7 +708,7 @@ ImapConnection.prototype._fetch = function(which, uids, options) {
extensions = 'X-GM-THRID X-GM-MSGID X-GM-LABELS ';
this._send(which + 'FETCH ' + uids.join(',') + ' (' + extensions
+ 'FLAGS INTERNALDATE'
+ 'UID FLAGS INTERNALDATE'
+ (opts.request.struct ? ' BODYSTRUCTURE' : '')
+ (typeof toFetch === 'string' ? ' BODY'
+ (!opts.markSeen ? '.PEEK' : '')
@ -735,23 +727,14 @@ ImapConnection.prototype._fetch = function(which, uids, options) {
return imapFetcher;
};
ImapConnection.prototype.seq.addFlags = function(seqnos, flags, cb) {
this._store('', seqnos, flags, true, cb);
};
ImapConnection.prototype.addFlags = function(uids, flags, cb) {
this._store('UID ', uids, flags, true, cb);
};
ImapConnection.prototype.seq.delFlags = function(seqnos, flags, cb) {
this._store('', seqnos, flags, false, cb);
};
ImapConnection.prototype.delFlags = function(uids, flags, cb) {
this._store('UID ', uids, flags, false, cb);
};
ImapConnection.prototype.seq.addKeywords = function(seqnos, flags, cb) {
return this._addKeywords('', seqnos, flags, cb);
};
ImapConnection.prototype.addKeywords = function(uids, flags, cb) {
return this._addKeywords('UID ', uids, flags, cb);
};
@ -761,16 +744,10 @@ ImapConnection.prototype._addKeywords = function(which, uids, flags, cb) {
this._store(which, uids, flags, true, cb);
};
ImapConnection.prototype.seq.delKeywords = function(seqnos, flags, cb) {
this._store('', seqnos, flags, false, cb);
};
ImapConnection.prototype.delKeywords = function(uids, flags, cb) {
this._store('UID ', uids, flags, false, cb);
};
ImapConnection.prototype.seq.copy = function(seqnos, boxTo, cb) {
return this._copy('', seqnos, boxTo, cb);
};
ImapConnection.prototype.copy = function(uids, boxTo, cb) {
return this._copy('UID ', uids, boxTo, cb);
};
@ -786,9 +763,6 @@ ImapConnection.prototype._copy = function(which, uids, boxTo, cb) {
this._send(which + 'COPY ' + uids.join(',') + ' "' + escape(boxTo) + '"', cb);
};
ImapConnection.prototype.seq.move = function(seqnos, boxTo, cb) {
return this._move('', seqnos, boxTo, cb);
};
ImapConnection.prototype.move = function(uids, boxTo, cb) {
return this._move('UID ', uids, boxTo, cb);
};
@ -846,6 +820,37 @@ ImapConnection.prototype._move = function(which, uids, boxTo, cb) {
}
};
/* Namespace for seqno-based commands */
ImapConnection.prototype.__defineGetter__('seq', function() {
var self = this;
return {
move: function(seqnos, boxTo, cb) {
return self._move('', seqnos, boxTo, cb);
},
copy: function(seqnos, boxTo, cb) {
return self._copy('', seqnos, boxTo, cb);
},
delKeywords: function(seqnos, flags, cb) {
self._store('', seqnos, flags, false, cb);
},
addKeywords: function(seqnos, flags, cb) {
return self._addKeywords('', seqnos, flags, cb);
},
delFlags: function(seqnos, flags, cb) {
self._store('', seqnos, flags, false, cb);
},
addFlags: function(seqnos, flags, cb) {
self._store('', seqnos, flags, true, cb);
},
fetch: function(seqnos, options) {
return self._fetch('', seqnos, options);
},
search: function(options, cb) {
self._search('', options, cb);
}
};
});
/****** Private Functions ******/

Loading…
Cancel
Save