diff --git a/gentong.js b/gentong.js
index fc0d811..88cb70a 100644
--- a/gentong.js
+++ b/gentong.js
@@ -241,15 +241,12 @@ function createServer() {
 
         response.end('OK');
 
-        var key = getRedisKey(qs.ts);
-        redisClient.get(key, function(err, request_id) {
-            if (err) {
-                logger.warn('Error when requesting request id for ts:' + qs.ts + ' (' + key + ')', {redis_error: err});
-                return;
-            }
+        if (qs.ref_id) {
+            callbackReport(qs.ref_id, response_code, message);
+        } else {
+            reverseHandlerByTs(qs.ts, response_code, message);
+        }
 
-            callbackReport(request_id, response_code, message);
-        });
     });
 
     httpServer.listen(config.h2h_out.listen_port, function() {
@@ -257,6 +254,18 @@ function createServer() {
     });
 }
 
+function reverseHandlerByTs(ts, responseCode, message) {
+    var key = getRedisKey(ts);
+    redisClient.get(key, function(err, request_id) {
+        if (err) {
+            logger.warn('Error when requesting request id for ts:' + ts + ' (' + key + ')', {redis_error: err});
+            return;
+        }
+
+        callbackReport(request_id, responseCode, message);
+    });
+}
+
 function splitSN(sn, _config) {
     var sn_pieces = sn.split(' ');