]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Allow to specify custom method for a message
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 6 Feb 2017 14:16:10 +0000 (14:16 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 6 Feb 2017 14:16:10 +0000 (14:16 +0000)
src/libutil/http.c
src/libutil/http.h
src/lua/lua_http.c

index 649cebeb22d2097106da17dba950737045821ca7..deddc56a41c67ee834c68edfd8e6b975a11a8d32 100644 (file)
@@ -2455,6 +2455,20 @@ rspamd_http_message_set_body (struct rspamd_http_message *msg,
        return TRUE;
 }
 
+void
+rspamd_http_message_set_method (struct rspamd_http_message *msg,
+               const gchar *method)
+{
+       gint i;
+
+       /* Linear search: not very efficient method */
+       for (i = 0; i < HTTP_METHOD_MAX; i ++) {
+               if (g_ascii_strcasecmp (method, http_method_str (i)) == 0) {
+                       msg->method = i;
+               }
+       }
+}
+
 gboolean
 rspamd_http_message_set_body_from_fd (struct rspamd_http_message *msg,
                gint fd)
index a28a6b3895a7104b90188d3b74de3a32bc933602..23d2fa3faf305ceef9fc8fc692e7f4d00e50b8a4 100644 (file)
@@ -333,6 +333,13 @@ const gchar *rspamd_http_message_get_body (struct rspamd_http_message *msg,
 gboolean rspamd_http_message_set_body (struct rspamd_http_message *msg,
                const gchar *data, gsize len);
 
+/**
+ * Set message's method by name
+ * @param msg
+ * @param method
+ */
+void rspamd_http_message_set_method (struct rspamd_http_message *msg,
+               const gchar *method);
 /**
  * Maps fd as message's body
  * @param msg
index ab389cb829272bb6f00dcf927e5639ab748c7b4f..31b0b3be3a1ffdf536d2e0deff45dac08c549594 100644 (file)
@@ -578,6 +578,15 @@ lua_http_request (lua_State *L)
                }
 
                lua_pop (L, 1);
+
+               lua_pushstring (L, "method");
+               lua_gettable (L, 1);
+
+               if (lua_type (L, -1) == LUA_TSTRING) {
+                       rspamd_http_message_set_method (msg, lua_tostring (L, -1));
+               }
+
+               lua_pop (L, 1);
        }
        else {
                msg_err ("http request has bad params");