summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--request.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/request.c b/request.c
index 3e67ff8..6039f56 100644
--- a/request.c
+++ b/request.c
@@ -155,12 +155,17 @@ static int read_rest_of_line(struct request * request)
return 0;
}
+#define PROCEED_TO(_x) \
+ request->temp.start = 0; \
+ request->temp.length = 0; \
+ request->step = _x; \
+ return _x(request)
+
/// Parses method field of the request.
/// \param request Request to process
/// \return -1 if an error has occured, 0 if too little data available or total number of bytes processed
int parse_step_method(struct request * request)
{
- request->temp.start = 0;
// TODO: Consider reworking read_* functions to be more aware of word boundaries.
request->temp.length = read_until_char(request, ' ');
@@ -171,8 +176,7 @@ int parse_step_method(struct request * request)
lua_pushlstring(request->lua, request->data + request->temp.start, request->temp.length);
- request->step = parse_step_path;
- return parse_step_path(request);
+ PROCEED_TO(parse_step_path);
}
/// Parses path field of the request.