Skip to content

Commit

Permalink
Update Fetch() to POST if body is provided (#211)
Browse files Browse the repository at this point in the history
  • Loading branch information
pkulchenko authored Jul 10, 2021
1 parent e99a4dc commit 98c674d
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions tool/net/redbean.c
Original file line number Diff line number Diff line change
Expand Up @@ -3438,14 +3438,14 @@ static int LuaFetch(lua_State *L) {
bool usessl;
uint32_t ip;
struct Url url;
int t, ret, sock;
int t, ret, sock, method;
char *host, *port;
struct TlsBio *bio;
struct Buffer inbuf;
struct addrinfo *addr;
struct HttpMessage msg;
struct HttpUnchunker u;
const char *urlarg, *request;
const char *urlarg, *request, *body;
size_t urlarglen, requestlen;
size_t g, i, n, hdrsize, paylen;
struct addrinfo hints = {.ai_family = AF_INET,
Expand All @@ -3457,6 +3457,14 @@ static int LuaFetch(lua_State *L) {
* Get args.
*/
urlarg = luaL_checklstring(L, 1, &urlarglen);
if (lua_isnoneornil(L, 2)) {
body = "";
method = kHttpGet;
} else {
size_t bodylen;
body = luaL_checklstring(L, 2, &bodylen);
method = kHttpPost;
}

/*
* Parse URL.
Expand Down Expand Up @@ -3508,12 +3516,12 @@ static int LuaFetch(lua_State *L) {
/*
* Create HTTP message.
*/
request = gc(xasprintf("GET %s HTTP/1.1\r\n"
request = gc(xasprintf("%s %s HTTP/1.1\r\n"
"Host: %s:%s\r\n"
"Connection: close\r\n"
"User-Agent: %s\r\n"
"\r\n",
gc(EncodeUrl(&url, 0)), host, port, brand));
"\r\n%s",
kHttpMethod[method], gc(EncodeUrl(&url, 0)), host, port, brand, body));
requestlen = strlen(request);

/*
Expand Down Expand Up @@ -3571,7 +3579,7 @@ static int LuaFetch(lua_State *L) {
/*
* Send HTTP Message.
*/
DEBUGF("client sending");
DEBUGF("client sending %s request", kHttpMethod[method]);
if (usessl) {
ret = mbedtls_ssl_write(&sslcli, request, requestlen);
if (ret != requestlen) {
Expand Down

0 comments on commit 98c674d

Please sign in to comment.