43 log("debug", "Received data of length "..#data.." out of "..bytes); |
43 log("debug", "Received data of length "..#data.." out of "..bytes); |
44 received_count = received_count + #data; |
44 received_count = received_count + #data; |
45 received_buffer[#received_buffer+1] = data; |
45 received_buffer[#received_buffer+1] = data; |
46 if received_count >= bytes then |
46 if received_count >= bytes then |
47 received_buffer = table.concat(received_buffer); |
47 received_buffer = table.concat(received_buffer); |
48 cache:set(key, flags, exptime, received_buffer:sub(1,bytes)); |
48 local ok, err = cache:set(key, flags, exptime, received_buffer:sub(1,bytes)); |
49 conn:send("STORED\r\n"); |
49 if ok then |
|
50 conn:send("STORED\r\n"); |
|
51 else |
|
52 conn:send("SERVER_ERROR "..(err or "Unknown error").."\r\n"); |
|
53 end |
50 conn:setlistener(memcached_listener); |
54 conn:setlistener(memcached_listener); |
51 conn:set_mode("*l"); |
55 conn:set_mode("*l"); |
52 if received_count > bytes then |
56 if received_count > bytes then |
53 log("debug", "Re-handling %d extra bytes", received_count-bytes); |
57 log("debug", "Re-handling %d extra bytes", received_count-bytes); |
54 memcached_listener.onincoming(conn, received_buffer:sub(bytes+1)); |
58 memcached_listener.onincoming(conn, received_buffer:sub(bytes+1)); |