patx/mrhttp-asgi
Return None when server connection is down
Commit cd88df8 · MarkReedZ · 2024-03-21T01:49:14Z
Comments
No comments yet.
Diff
diff --git a/src/mrhttp/internals/common.h b/src/mrhttp/internals/common.h
index 77270ec..38cd661 100644
--- a/src/mrhttp/internals/common.h
+++ b/src/mrhttp/internals/common.h
@@ -6,7 +6,7 @@
#define DBG_RESP if(0)
#define DBG_MEMCAC if(0)
-#define DBG_MRQ if(1)
+#define DBG_MRQ if(0)
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
diff --git a/src/mrhttp/internals/mrqclient.c b/src/mrhttp/internals/mrqclient.c
index c98b641..62eab3a 100644
--- a/src/mrhttp/internals/mrqclient.c
+++ b/src/mrhttp/internals/mrqclient.c
@@ -112,7 +112,7 @@ PyObject *MrqClient_get(MrqClient* self, PyObject *args) {
PyObject *getargs;
if(!PyArg_ParseTuple(args, "iO", &slot, &getargs)) return NULL;
int srv = server_slotmap[slot&0xFF];
- if ( srv == -1 ) return NULL;
+ if ( srv == -1 ) Py_RETURN_NONE;
MrqServer_get( self->servers[srv], getargs); //TODO error check
return PyLong_FromLong(srv);
}
@@ -122,7 +122,7 @@ PyObject *MrqClient_set(MrqClient* self, PyObject *args) {
PyObject *d;
if(!PyArg_ParseTuple(args, "iO", &slot, &d)) return NULL;
int srv = server_slotmap[slot&0xFF];
- if ( srv == -1 ) return NULL;
+ if ( srv == -1 ) Py_RETURN_NONE;
MrqServer_set( self->servers[srv], d); //TODO error check
return PyLong_FromLong(srv);
}
diff --git a/src/mrhttp/internals/protocol.c b/src/mrhttp/internals/protocol.c
index 379e432..6be2e8d 100644
--- a/src/mrhttp/internals/protocol.c
+++ b/src/mrhttp/internals/protocol.c
@@ -1,5 +1,4 @@
-
// PyObject_Print( req->py_user, stdout, 0 ); printf("\n");
@@ -22,7 +21,7 @@
// DELME
static void print_buffer( char* b, int len ) {
for ( int z = 0; z < len; z++ ) {
- printf( "%02x ",(int)b[z]);
+ printf( "%02x ",(unsigned int)b[z]);
}
printf("\n");
}
@@ -390,8 +389,7 @@ void Protocol_on_memcached_reply( SessionCallbackData *scd, char *data, int data
p += req->body_len;
memcpy(p, data, data_sz);
p += data_sz;
- DBG_MRQ printf(" DELME push to workserver:\n");
- DBG_MRQ printf(" >%.*s<\n", (int)(p-tmp),tmp);
+ DBG_MRQ printf(" pushing to workserver:\n");
DBG_MRQ print_buffer(tmp, (int)(p-tmp));
rc = MrqClient_push ( py_mrq, slot, tmp, (int)(p-tmp) );
free(tmp);
diff --git a/src/mrhttp/mrqclient.py b/src/mrhttp/mrqclient.py
index 0654d2a..6d95ac2 100644
--- a/src/mrhttp/mrqclient.py
+++ b/src/mrhttp/mrqclient.py
@@ -86,6 +86,7 @@ class MrqClient(mrhttp.CMrqClient):
async def get(self, slot, o):
b = mrpacker.pack(o)
srv = self._get(slot, b)
+ if srv == None: return None
return await self.servers[srv].q.get()
def lost_connection(self, srv):