OK, it's me, sorry to bug you again.

I am following replace-header plugin example to implement a plugin that sets a 
cookie. 

Here is my call back.

  case INK_EVENT_HTTP_SEND_RESPONSE_HDR:
    replace_header(txnp, contp);

And below is replace_header(). But when I run it, everything seems fine 
according to logs, but I don't find an extra header (I intercept the TS's 
response using another HTTP, burpSuite, proxy running on desktop with the 
browser) setting cookie in the response.

Logs show:
[Jan  8 03:25:32.019] Server {3086841568} DIAG: (add-cookie) ENTER 
replace_header.
[Jan  8 03:25:32.019] Server {3086841568} DIAG: (add-cookie) EXIT 
replace_header.

So, am I doing something wrong in code, or forgetting to set something in 
config? Or could it be something deeper?

Many thanks in advance!



static void
replace_header(INKHttpTxn txnp, INKCont contp)
{
  INKMBuffer resp_bufp;
  INKMLoc resp_loc;
  INKMLoc field_loc;

  const char *cookie_content = "terms=; path=/; expires=Thu, 01-Jan-1970 
00:00:00 GMT";

  INKDebug("add-cookie", "ENTER replace_header.");

  if (!INKHttpTxnServerRespGet(txnp, &resp_bufp, &resp_loc)) {
    INKDebug("add-cookie", "INKHttpTxnServerRespGet failed.");
    goto done;
  }

    /* create a new field in the header */
    field_loc = INKMimeHdrFieldCreate(resp_bufp, resp_loc);
    if (!field_loc) {
      INKDebug("add-cookie", "INKMimeHdrFieldCreate returns null.");
      INKHandleMLocRelease(resp_bufp, INK_NULL_MLOC, resp_loc);
      goto done;
    }

    /* set its name */
    if (INK_SUCCESS != INKMimeHdrFieldNameSet(resp_bufp, resp_loc, field_loc, 
INK_MIME_FIELD_SET_COOKIE, INK_MIME_LEN_SET_COOKIE)) {
      INKDebug("add-cookie", "INKMimeHdrFieldNameSet failed.");
    }

    /* set its value */
    //INKMimeHdrFieldValueInsert(resp_bufp, resp_loc, field_loc, "none", 4, -1);
    if (INK_SUCCESS != INKMimeHdrFieldValueStringInsert(resp_bufp, resp_loc, 
field_loc, -1, cookie_content, -1)) {
      INKDebug("add-cookie", "INKMimeHdrFieldValueStringInsert failed.");
    }

    /* insert it into the header */
    if (INK_SUCCESS != INKMimeHdrFieldInsert(resp_bufp, resp_loc, field_loc, 
-1)) {
      INKDebug("add-cookie", "INKMimeHdrFieldInsert failed.");
    }
    INKHandleMLocRelease(resp_bufp, resp_loc, field_loc);
    INKHandleMLocRelease(resp_bufp, INK_NULL_MLOC, resp_loc);

done:
  INKHttpTxnReenable(txnp, INK_EVENT_HTTP_CONTINUE);
  INKDebug("add-cookie", "EXIT replace_header.");
}

Reply via email to