Uploaded image for project: 'Axis2-C'
  1. Axis2-C
  2. AXIS2C-1282

1)reads all http headers from the request and adds them to the msg_ctx, they were missing. 2)Allows custumized http status and http headers for rest requests(don't affect soap requests). 3) Adds missing http forbidden definitions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.5.0
    • 1.7.0
    • httpd module
    • None

    Description

      #1 Adds http headers to msg_ctx when using axis2/c module for apache
      I noticed however this functionality were only implemented for the
      standalone server. When using the axis module for apache http headers
      were not added to the msg_ctx so they were not accessible @ the inflow
      handlers level for instance.

      #2 Adds forbidden definition tags for http forbidden code which is
      missing in standard release

      #define AXIS2_HTTP_RESPONSE_FORBIDDEN_CODE_VAL 403
      #define AXIS2_HTTP_RESPONSE_HTTP_FORBIDDEN_CODE_NAME "Forbidden"
      #define AXIS2_HTTP_RESPONSE_HTTP_FORBIDDEN "403 Forbidden"

      #3 Adds support to specify feedback for REST requests, when a module
      failure occurs.

      This issue is related to the difference between soap and rest
      requests. When an inflow handler fails two things can happen depending
      on the request type:

      • For SOAP requests, the inflow handler chain is broken, and all the
        outflow fault handlers are invoked. The response soap envelope
        response containing a default fault is built by axis in between these
        phases, so we can edit the fault accordingly @ the outflow fault
        handlers.
      • For REST requests, the inflow handler chain is also broken, but the
        outflow fault handlers are not invoked. This is not a problem, and is
        probably intended, since unlike soap there is no need to create a soap
        envelope. The thing is when this happens it always returned 202
        ACCEPTED, which is not enough to provide any feedback to the user who
        made the request.

      @ the inflow handler is now possible to set the desired status code
      desired for the response, extra http headers, and/or http content. It
      was already possible before, changes just weren't propagated to the
      actual response.

      inflow handler example with the patch:
      ..
      // For REST requests
      if (doing_rest && AXIS2_FAILURE == result)

      { axis2_msg_ctx_set_status_code(msg_ctx, env, AXIS2_HTTP_RESPONSE_HTTP_UNAUTHORIZED_CODE_VAL); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[Inflow][authentication_in] HTTP status code unauthorized"); axutil_stream_t *stream = axutil_stream_create_basic(env); axis2_char_t *http_content = axutil_strcat(env, AXIS2_HTTP_RESPONSE_HTTP_UNAUTHORIZED, "\n", NULL); axutil_stream_write(stream, env, http_content, axutil_strlen(http_content)); axis2_msg_ctx_set_transport_out_stream(msg_ctx, env, stream); }

      return result;
      }

      Attachments

        1. http_forbidden.diff
          2 kB
          Luis Bilo
        2. apache_http_headers_and_rest_enhancement.diff
          5 kB
          Luis Bilo

        Issue Links

          Activity

            People

              nandika Korale Gamaralalage Nandika Chandrasiri Jayawardana
              bilo Luis Bilo
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 1h
                  1h
                  Remaining:
                  Remaining Estimate - 1h
                  1h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified