patx/mrhttp-asgi

Return None when server connection is down

Commit cd88df8 · MarkReedZ · 2024-03-21T01:49:14Z

Changeset
cd88df87e861cdfdb0c06ff6ac4d3dd60b3b85e2
Parents
896358a65f61c7b6e0b41c966d2f027a159f4547

View source at this commit

Comments

No comments yet.

Log in to comment

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):