New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

memcaching

Package Overview
Dependencies
Maintainers
3
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

memcaching - npm Package Compare versions

Comparing version 0.2.1 to 0.2.2

test/integration/disconnect.test.js

4

lib/commandqueue.js

@@ -41,7 +41,7 @@ module.exports = CommandQueue

// When the command finishes, try to run the next command
var me = this
var self = this
command(this.resource, function() {
me._next()
self._next()
})
}

@@ -76,6 +76,11 @@ module.exports = ConnectionPool

ConnectionPool.prototype._connection = function(server) {
var self = this
function onEnd() {
delete self.connections[server]
}
if (!this.connections.hasOwnProperty(server))
this.connections[server] = this.connect(server)
this.connections[server] = this.connect(server, onEnd)
return this.connections[server]
}

@@ -15,5 +15,11 @@ var Buffers = require('buffers')

var self = this
this.stream = stream
this.open = true
this.delimiter = Buffer.isBuffer(delimiter) ? delimiter : Buffer(delimiter)
this.queue = CommandQueue(stream)
this.stream.on('end', function() {
self.open = false
})
}

@@ -26,4 +32,7 @@

* delimiter.
*
* Throws an error if the stream is closed
*/
DelimitedStream.prototype.send = function send(message) {
if (!this.open) throw Error("write after end")
this.stream.write(message)

@@ -42,3 +51,3 @@ this.stream.write(this.delimiter)

var buffers = new Buffers
, delimiter = this.delimiter
, self = this

@@ -56,3 +65,3 @@ if (typeof bytes === 'function') cb = bytes

var end = buffers.indexOf(delimiter, bytes)
var end = buffers.indexOf(self.delimiter, bytes)
if (end === -1) return

@@ -63,4 +72,4 @@

// If there is part of the buffer we read, but are not consuming, put it back
if (buffers.length > end + delimiter.length)
stream.unshift(buffers.slice(end + delimiter.length))
if (buffers.length > end + self.delimiter.length)
stream.unshift(buffers.slice(end + self.delimiter.length))
}

@@ -71,2 +80,3 @@

stream.removeListener('error', finish)
stream.removeListener('end', end)
cb(err, resp)

@@ -76,6 +86,14 @@ done()

function end() {
finish(Error("read after end"))
}
stream.on('readable', read)
stream.on('error', finish)
read()
stream.on('end', end)
if (!self.open) end()
else read()
})
return true
}

@@ -11,5 +11,7 @@ var MemcacheSocket = require('./memcachesocket')

function connect(server) {
function connect(server, onEnd) {
var parts = server.split(':')
return new MemcacheSocket({ host: parts[0], port: parts[1] }, opts)
var socket = new MemcacheSocket({ host: parts[0], port: parts[1] }, opts)
socket.socket.on('error', onEnd).on('end', onEnd)
return socket
}

@@ -59,9 +61,9 @@

, error = null
, me = this
, self = this
, prefix = this.prefix
this.pool.use(keys, function(socket, keys) {
var params = me.parseParams({ verb: verb, keys: keys })
var params = self.parseParams({ verb: verb, keys: keys })
socket.execute(params, function(err, response) {
if (err) error = null
if (err) error = err
else results = results.concat(response)

@@ -68,0 +70,0 @@

@@ -46,4 +46,8 @@ var SetCommand = require('./commands/set')

return command(params, stream, done)
try {
command(params, stream, done)
} catch (e) {
done(e)
}
}
}
{
"name": "memcaching",
"version": "0.2.1",
"version": "0.2.2",
"description": "Library to speak the memcache text protocol",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -82,1 +82,26 @@ var DelimitedStream = require('../lib/delimitedstream')

})
test("handle end-of-stream", function(t) {
var stream = PassThrough()
, testStream = DelimitedStream(stream, "----")
testStream.recv(function(err, msg1) {
t.error(err, "no error")
t.equal(msg1.toString(), "msg1", "msg1 should be intact")
testStream.recv(function(err, msg) {
t.same(err, Error("read after end"), "got error reading during end")
t.type(msg, 'undefined', "no response")
t.throws(function() {
testStream.send("foo")
}, Error("write after end"), "got error writing after end")
testStream.recv(function(err, msg) {
t.same(err, Error("read after end"), "got error reading after end")
t.type(msg, 'undefined', "no response")
t.end()
})
})
stream.end()
})
stream.write("msg1----ms")
})
var MemcacheClient = require('../../lib/memcacheclient')
, MemcacheServer = require('./memcacheserver')
, test = require('tap').test
console.log("This test requires a running memcache server on port 11211")
test("can talk to memcache", function(t) {
var server = new MemcacheServer()
var client = new MemcacheClient({ unref: false })
client.addServer('127.0.0.1:11211')
client.addServer('127.0.0.1:' + server.port)

@@ -64,4 +64,5 @@ client.flush(0, function(err, result) {

client.end()
server.end()
t.end()
})
})
var MemcacheClient = require('../../lib/memcacheclient')
, MemcacheServer = require('./memcacheserver')
, test = require('tap').test
console.log("This test requires a running memcache server on port 11211")
test("can use cas with memcache", function(t) {
var client = new MemcacheClient({ servers: [ '127.0.0.1:11211' ] })
var server = new MemcacheServer()
var client = new MemcacheClient({ servers: [ '127.0.0.1:' + server.port ] })

@@ -40,2 +40,3 @@ client.flush(0, function(err, result) {

t.equals(result, "OK", "should get result OK for a FLUSH")
server.end()
t.end()

@@ -42,0 +43,0 @@ })

var MemcacheClient = require('../../lib/memcacheclient')
, MemcacheServer = require('./memcacheserver')
, test = require('tap').test
console.log("This test requires a running memcache server on port 11211")
test("can use prefixes correctly", function(t) {
var server = new MemcacheServer()
var client = new MemcacheClient({ unref: false })
client.addServer('127.0.0.1:11211')
client.addServer('127.0.0.1:' + server.port)

@@ -49,4 +49,5 @@ client.flush(0, function(err, result) {

client.end()
server.end()
t.end()
})
})
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc