Traffic Server
  1. Traffic Server
  2. TS-686

Change location in the APIs to be type specific

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: 2.1.6
    • Fix Version/s: sometime
    • Component/s: TS API
    • Labels:
      None

      Description

      Change arguments for APIs to use type specific combinations of buffer and location instead of having generic types (e.g., TSMBuffer, TSMLoc) that can be interchanged.

      Leif and I talked about this more after I sent and email to dev@ and we agreed that combining the buffer and location would be better unless there are a lot of APIs that require then to passed in separately. Looking over the APIs I don't think this is the case.

      Also, we talked about possibly having request and response being the same type, so there wouldn't be two version of some of the APIs (e.g., TSHttpHdrUrlGet())

      Parts of my email to dev@:
      Looking at the three APIs below it is hard to tell the location/offset
      really point to:

      tsapi TSReturnCode TSHttpTxnClientReqGet(TSHttpTxn txnp, TSMBuffer*
      bufp, TSMLoc* offset);
      tsapi TSReturnCode TSHttpHdrUrlGet(TSMBuffer bufp, TSMLoc offset,
      TSMLoc* locp);
      tsapi const char* TSUrlSchemeGet(TSMBuffer bufp, TSMLoc offset, int
      *length);

      In a specific case that happened last week a person was taking bufp and
      offset from TSHttpTxnClientReqGet() and passing the values to
      TSUrlSchemeGet(). Since it didn't give him compile errors he only saw
      the problem when the server was under load and it would core dump.

      One way to fix this would be to change locations to specific types. If
      we want to take it a step further the buffer and location could be
      combined and given a specific type simplifying the APIs.

      Example of combining buffer and location and making specific types (IMO
      cleaner):
      tsapi TSReturnCode TSHttpTxnClientReqGet(TSHttpTxn txnp, TSRequest
      *request);
      tsapi TSReturnCode TSHttpHdrUrlGet(TSRequest request, TSUrl *url);
      tsapi const char* TSUrlSchemeGet(TSUrl url, int *length);

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Bryan Call
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development