Backport r1906 from trunk: Provide a thread if the translator wasn't passed one in...
authordbs <dbs@9efc2488-bf62-4759-914b-345cdb29e865>
Fri, 29 Jan 2010 03:48:37 +0000 (03:48 +0000)
committerdbs <dbs@9efc2488-bf62-4759-914b-345cdb29e865>
Fri, 29 Jan 2010 03:48:37 +0000 (03:48 +0000)
git-svn-id: svn://svn.open-ils.org/OpenSRF/branches/rel_1_2@1912 9efc2488-bf62-4759-914b-345cdb29e865

src/gateway/osrf_http_translator.c

index d794d08..dd180d7 100644 (file)
@@ -127,7 +127,6 @@ static osrfHttpTranslator* osrfNewHttpTranslator(request_rec* apreq) {
     trans->handle = osrfSystemGetTransportClient();
     trans->recipient = apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_TO);
     trans->service = apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_SERVICE);
-    trans->thread = apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_THREAD); /* XXX create thread if necessary */
 
     const char* timeout = apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_TIMEOUT);
     if(timeout) 
@@ -145,6 +144,11 @@ static osrfHttpTranslator* osrfNewHttpTranslator(request_rec* apreq) {
     snprintf(buf, sizeof(buf), "%d%ld", getpid(), time(NULL));
     trans->delim = md5sum(buf);
 
+    /* Use thread if it has been passed in; otherwise, just use the delimiter */
+    trans->thread = apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_THREAD)
+        ?  apr_table_get(apreq->headers_in, OSRF_HTTP_HEADER_THREAD)
+        : (const char*)trans->delim;
+
     return trans;
 }