You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by br...@apache.org on 2014/07/08 23:07:07 UTC
[1/2] git commit: TS-2929: SPDY should allow arbitrary methods
Repository: trafficserver
Updated Branches:
refs/heads/master fa655be29 -> f3d8ee782
TS-2929: SPDY should allow arbitrary methods
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/b89ec596
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/b89ec596
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/b89ec596
Branch: refs/heads/master
Commit: b89ec5963174788e3ed69d6540565fb39e64ac1a
Parents: fa655be
Author: Brian Geffon <br...@apache.org>
Authored: Tue Jul 8 14:06:35 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Tue Jul 8 14:06:35 2014 -0700
----------------------------------------------------------------------
proxy/FetchSM.cc | 28 ++++------------------------
proxy/FetchSM.h | 4 +---
proxy/InkAPI.cc | 2 +-
proxy/api/ts/experimental.h | 17 +----------------
proxy/spdy/SpdyCallbacks.cc | 28 +++-------------------------
5 files changed, 10 insertions(+), 69 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b89ec596/proxy/FetchSM.cc
----------------------------------------------------------------------
diff --git a/proxy/FetchSM.cc b/proxy/FetchSM.cc
index 0372e9c..56ab827 100644
--- a/proxy/FetchSM.cc
+++ b/proxy/FetchSM.cc
@@ -27,20 +27,6 @@
#include "HTTP.h"
#include "PluginVC.h"
-static const char *http_method[] = {
- "NONE",
- "GET",
- "POST",
- "CONNECT",
- "DELETE",
- "HEAD",
- "PURGE",
- "PUT",
- "OPTIONS",
- "TRACE",
- "LAST",
-};
-
#define DEBUG_TAG "FetchSM"
#define FETCH_LOCK_RETRY_TIME HRTIME_MSECONDS(10)
@@ -124,9 +110,6 @@ FetchSM::has_body()
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4
//
- if (req_method == TS_FETCH_METHOD_HEAD)
- return false;
-
hdr = &client_response_hdr;
status_code = hdr->status_get();
@@ -486,7 +469,7 @@ FetchSM::fetch_handler(int event, void *edata)
}
void
-FetchSM::ext_init(Continuation *cont, TSFetchMethod method,
+FetchSM::ext_init(Continuation *cont, const char *method,
const char *url, const char *version,
const sockaddr *client_addr, int flags)
{
@@ -517,8 +500,7 @@ FetchSM::ext_init(Continuation *cont, TSFetchMethod method,
memset(&callback_options, 0, sizeof(callback_options));
memset(&callback_events, 0, sizeof(callback_events));
- req_method = method;
- req_buffer->write(http_method[method], strlen(http_method[method]));
+ req_buffer->write(method, strlen(method));
req_buffer->write(" ", 1);
req_buffer->write(url, strlen(url));
req_buffer->write(" ", 1);
@@ -551,9 +533,7 @@ FetchSM::ext_lanuch()
void
FetchSM::ext_write_data(const void *data, size_t len)
{
- bool writeReady = (header_done ||
- (req_method == TS_FETCH_METHOD_POST) ||
- (req_method == TS_FETCH_METHOD_PUT));
+ bool writeReady = header_done;
if (writeReady && (fetch_flags & TS_FETCH_FLAGS_NEWLOCK)) {
MUTEX_TAKE_LOCK(mutex, this_ethread());
@@ -566,7 +546,7 @@ FetchSM::ext_write_data(const void *data, size_t len)
// be initialized.
//
if (writeReady) {
- Debug(DEBUG_TAG, "[%s] re-enabling write_vio, header_done %u, req_method %u", __FUNCTION__, header_done, req_method);
+ Debug(DEBUG_TAG, "[%s] re-enabling write_vio, header_done %u", __FUNCTION__, header_done);
write_vio->reenable();
fetch_handler(TS_EVENT_VCONN_WRITE_READY, write_vio);
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b89ec596/proxy/FetchSM.h
----------------------------------------------------------------------
diff --git a/proxy/FetchSM.h b/proxy/FetchSM.h
index 0eb0922..24a79af 100644
--- a/proxy/FetchSM.h
+++ b/proxy/FetchSM.h
@@ -52,7 +52,6 @@ public:
header_done = 0;
user_data = NULL;
has_sent_header = false;
- req_method = TS_FETCH_METHOD_NONE;
req_content_length = 0;
resp_is_chunked = -1;
resp_content_length = -1;
@@ -110,7 +109,7 @@ public:
//
// *flags* can be bitwise OR of several TSFetchFlags
//
- void ext_init(Continuation *cont, TSFetchMethod method,
+ void ext_init(Continuation *cont, const char *method,
const char *url, const char *version,
const sockaddr *client_addr, int flags);
void ext_add_header(const char *name, int name_len,
@@ -169,7 +168,6 @@ private:
int fetch_flags;
void *user_data;
bool has_sent_header;
- TSFetchMethod req_method;
int64_t req_content_length;
int64_t resp_content_length;
int64_t resp_recived_body_len;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b89ec596/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 23d17cb..7b2d6aa 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -7281,7 +7281,7 @@ TSFetchUrl(const char* headers, int request_len, sockaddr const* ip , TSCont con
}
TSFetchSM
-TSFetchCreate(TSCont contp, TSFetchMethod method,
+TSFetchCreate(TSCont contp, const char *method,
const char *url, const char *version,
struct sockaddr const* client_addr, int flags)
{
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b89ec596/proxy/api/ts/experimental.h
----------------------------------------------------------------------
diff --git a/proxy/api/ts/experimental.h b/proxy/api/ts/experimental.h
index ac4cd8e..f82ff17 100644
--- a/proxy/api/ts/experimental.h
+++ b/proxy/api/ts/experimental.h
@@ -37,21 +37,6 @@ extern "C"
{
#endif /* __cplusplus */
- /* For Extended FetchSM APIs */
- typedef enum {
- TS_FETCH_METHOD_NONE,
- TS_FETCH_METHOD_GET,
- TS_FETCH_METHOD_POST,
- TS_FETCH_METHOD_CONNECT,
- TS_FETCH_METHOD_DELETE,
- TS_FETCH_METHOD_HEAD,
- TS_FETCH_METHOD_PURGE,
- TS_FETCH_METHOD_PUT,
- TS_FETCH_METHOD_OPTIONS,
- TS_FETCH_METHOD_TRACE,
- TS_FETCH_METHOD_LAST
- } TSFetchMethod;
-
typedef enum
{
TS_FETCH_EVENT_EXT_HEAD_READY = -1,
@@ -651,7 +636,7 @@ extern "C"
*
* return TSFetchSM which should be destroyed by TSFetchDestroy().
*/
- tsapi TSFetchSM TSFetchCreate(TSCont contp, TSFetchMethod method,
+ tsapi TSFetchSM TSFetchCreate(TSCont contp, const char *method,
const char *url, const char *version,
struct sockaddr const* client_addr, int flags);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b89ec596/proxy/spdy/SpdyCallbacks.cc
----------------------------------------------------------------------
diff --git a/proxy/spdy/SpdyCallbacks.cc b/proxy/spdy/SpdyCallbacks.cc
index 830c336..2023e0c 100644
--- a/proxy/spdy/SpdyCallbacks.cc
+++ b/proxy/spdy/SpdyCallbacks.cc
@@ -165,7 +165,7 @@ spdy_show_ctl_frame(const char *head_str, spdylay_session * /*session*/, spdylay
}
static int
-spdy_fetcher_launch(SpdyRequest *req, TSFetchMethod method)
+spdy_fetcher_launch(SpdyRequest *req)
{
string url;
int fetch_flags;
@@ -186,7 +186,7 @@ spdy_fetcher_launch(SpdyRequest *req, TSFetchMethod method)
// TS-2906: FetchSM sets requests are internal requests, we need to not do that for SPDY streams.
fetch_flags |= TS_FETCH_FLAGS_NOT_INTERNAL_REQUEST;
- req->fetch_sm = TSFetchCreate((TSCont)sm, method,
+ req->fetch_sm = TSFetchCreate((TSCont)sm, req->method.c_str(),
url.c_str(), req->version.c_str(),
client_addr, fetch_flags);
TSFetchUserDataSet(req->fetch_sm, req);
@@ -293,29 +293,7 @@ spdy_process_syn_stream_frame(SpdyClientSession *sm, SpdyRequest *req)
return;
}
- if (req->method == "GET")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_GET);
- else if (req->method == "POST")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_POST);
- else if (req->method == "PURGE")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_PURGE);
- else if (req->method == "PUT")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_PUT);
- else if (req->method == "HEAD")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_HEAD);
- else if (req->method == "CONNECT")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_CONNECT);
- else if (req->method == "DELETE")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_DELETE);
- else if (req->method == "OPTIONS")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_OPTIONS);
- else if (req->method == "TRACE")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_TRACE);
- else if (req->method == "LAST")
- spdy_fetcher_launch(req, TS_FETCH_METHOD_LAST);
- else
- spdy_prepare_status_response(sm, req->stream_id, STATUS_405);
-
+ spdy_fetcher_launch(req);
}
void
[2/2] git commit: TS-2929: SPDY should allow arbitrary methods
Posted by br...@apache.org.
TS-2929: SPDY should allow arbitrary methods
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f3d8ee78
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f3d8ee78
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f3d8ee78
Branch: refs/heads/master
Commit: f3d8ee782983c751c1d2f31b25b67ba73ffa0721
Parents: b89ec59
Author: Brian Geffon <br...@apache.org>
Authored: Tue Jul 8 14:06:58 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Tue Jul 8 14:06:58 2014 -0700
----------------------------------------------------------------------
CHANGES | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f3d8ee78/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index c57fd1c..c51d3b2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 5.1.0
+ *) [TS-2929] SPDY should allow arbitrary methods
+
*) [TS-2921] Fix build failure from TS-2893.
Author: Ryo Okubo <ro...@yahoo-corp.jp>