@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader &request, const char *field_name,
284284 return default_value;
285285}
286286
287- static void
287+ static TSReturnCode
288288GeneratorWriteResponseHeader (GeneratorRequest *grq, TSCont contp)
289289{
290290 GeneratorHttpHeader response;
291291
292292 VDEBUG (" writing response header" );
293293
294- TSReleaseAssert (TSHttpHdrTypeSet (response.buffer , response.header , TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
295- TSReleaseAssert (TSHttpHdrVersionSet (response.buffer , response.header , TS_HTTP_VERSION (1 , 1 )) == TS_SUCCESS);
294+ if (TSHttpHdrTypeSet (response.buffer , response.header , TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
295+ VERROR (" failed to set type" );
296+ return TS_ERROR;
297+ }
298+ if (TSHttpHdrVersionSet (response.buffer , response.header , TS_HTTP_VERSION (1 , 1 )) != TS_SUCCESS) {
299+ VERROR (" failed to set HTTP version" );
300+ return TS_ERROR;
301+ }
302+ if (TSHttpHdrStatusSet (response.buffer , response.header , TS_HTTP_STATUS_OK) != TS_SUCCESS) {
303+ VERROR (" failed to set HTTP status" );
304+ return TS_ERROR;
305+ }
296306
297- TSReleaseAssert (TSHttpHdrStatusSet (response.buffer , response.header , TS_HTTP_STATUS_OK) == TS_SUCCESS);
298307 TSHttpHdrReasonSet (response.buffer , response.header , TSHttpHdrReasonLookup (TS_HTTP_STATUS_OK), -1 );
299308
300309 // Set the Content-Length header.
@@ -320,6 +329,8 @@ GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
320329 TSVIOReenable (grq->writeio .vio );
321330
322331 TSStatIntIncrement (StatCountBytes, hdrlen);
332+
333+ return TS_SUCCESS;
323334}
324335
325336static bool
@@ -346,8 +357,16 @@ GeneratorParseRequest(GeneratorRequest *grq)
346357 grq->maxage = GeneratorGetRequestHeader (grq->rqheader , " Generator-MaxAge" , lengthof (" Generator-MaxAge" ), grq->maxage );
347358
348359 // Next, parse our parameters out of the URL.
349- TSReleaseAssert (TSHttpHdrUrlGet (grq->rqheader .buffer , grq->rqheader .header , &url) == TS_SUCCESS);
350- TSReleaseAssert (path = TSUrlPathGet (grq->rqheader .buffer , url, &pathsz));
360+ if (TSHttpHdrUrlGet (grq->rqheader .buffer , grq->rqheader .header , &url) != TS_SUCCESS) {
361+ VERROR (" failed to get URI handle" );
362+ return false ;
363+ }
364+
365+ path = TSUrlPathGet (grq->rqheader .buffer , url, &pathsz);
366+ if (!path) {
367+ VDEBUG (" empty path" );
368+ return false ;
369+ }
351370
352371 VDEBUG (" requested path is %.*s" , pathsz, path);
353372
@@ -504,7 +523,10 @@ GeneratorInterceptHook(TSCont contp, TSEvent event, void *edata)
504523 return TS_EVENT_NONE;
505524 }
506525
507- GeneratorWriteResponseHeader (cdata.grq , contp);
526+ if (GeneratorWriteResponseHeader (cdata.grq , contp) != TS_SUCCESS) {
527+ VERROR (" failure writing response" );
528+ return TS_EVENT_ERROR;
529+ }
508530 return TS_EVENT_NONE;
509531
510532 case TS_PARSE_CONT:
@@ -580,7 +602,10 @@ GeneratorInterceptHook(TSCont contp, TSEvent event, void *edata)
580602 // Our response delay expired, so write the headers now, which
581603 // will also trigger the read+write event flow.
582604 argument_type cdata = TSContDataGet (contp);
583- GeneratorWriteResponseHeader (cdata.grq , contp);
605+ if (GeneratorWriteResponseHeader (cdata.grq , contp) != TS_SUCCESS) {
606+ VERROR (" failure writing response" );
607+ return TS_EVENT_ERROR;
608+ }
584609 return TS_EVENT_NONE;
585610 }
586611
@@ -623,8 +648,14 @@ GeneratorTxnHook(TSCont contp, TSEvent event, void *edata)
623648 TSMLoc url_loc;
624649 TSMLoc hdr_loc;
625650
626- TSReleaseAssert (TSHttpTxnClientReqGet (arg.txn , &recp, &hdr_loc) == TS_SUCCESS);
627- TSReleaseAssert (TSHttpHdrUrlGet (recp, hdr_loc, &url_loc) == TS_SUCCESS);
651+ if (TSHttpTxnClientReqGet (arg.txn , &recp, &hdr_loc) != TS_SUCCESS) {
652+ VERROR (" failed to get client request handle" );
653+ break ;
654+ }
655+ if (TSHttpHdrUrlGet (recp, hdr_loc, &url_loc) != TS_SUCCESS) {
656+ VERROR (" failed to get URI handle" );
657+ break ;
658+ }
628659 CheckCacheable (arg.txn , url_loc, recp);
629660 TSHandleMLocRelease (recp, hdr_loc, url_loc);
630661 TSHandleMLocRelease (recp, TS_NULL_MLOC, hdr_loc);
@@ -634,8 +665,7 @@ GeneratorTxnHook(TSCont contp, TSEvent event, void *edata)
634665 case TS_EVENT_HTTP_CACHE_LOOKUP_COMPLETE: {
635666 int status;
636667
637- TSReleaseAssert (TSHttpTxnCacheLookupStatusGet (arg.txn , &status) == TS_SUCCESS);
638- if (status != TS_CACHE_LOOKUP_HIT_FRESH) {
668+ if (TSHttpTxnCacheLookupStatusGet (arg.txn , &status) == TS_SUCCESS && status != TS_CACHE_LOOKUP_HIT_FRESH) {
639669 // This transaction is going to be a cache miss, so intercept it.
640670 VDEBUG (" intercepting origin server request for txn=%p" , arg.txn );
641671 TSHttpTxnServerIntercept (TSContCreate (GeneratorInterceptHook, TSMutexCreate ()), arg.txn );
0 commit comments