diff options
Diffstat (limited to 'src/couch/priv/couch_js/60/http.cpp')
-rw-r--r-- | src/couch/priv/couch_js/60/http.cpp | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/couch/priv/couch_js/60/http.cpp b/src/couch/priv/couch_js/60/http.cpp index 9ab47b2f0..6577cd44e 100644 --- a/src/couch/priv/couch_js/60/http.cpp +++ b/src/couch/priv/couch_js/60/http.cpp @@ -171,7 +171,6 @@ http_dtor(JSFreeOp* fop, JSObject* obj) { HTTPData* http = (HTTPData*) JS_GetPrivate(obj); if(http) { - if(http->url) free(http->url); if(http->req_headers) curl_slist_free_all(http->req_headers); free(http); } @@ -196,7 +195,7 @@ http_open(JSContext* cx, JSObject* req, JS::Value mth, JS::Value url, JS::Value goto done; } - method = enc_string(cx, mth, NULL); + method = (char *)js_to_string(cx, mth).c_str(); if(!method) { JS_ReportErrorUTF8(cx, "Failed to encode method."); goto done; @@ -205,7 +204,6 @@ http_open(JSContext* cx, JSObject* req, JS::Value mth, JS::Value url, JS::Value for(methid = 0; METHODS[methid] != NULL; methid++) { if(strcasecmp(METHODS[methid], method) == 0) break; } - if(methid > OPTIONS) { JS_ReportErrorUTF8(cx, "Invalid method specified."); goto done; @@ -223,7 +221,7 @@ http_open(JSContext* cx, JSObject* req, JS::Value mth, JS::Value url, JS::Value http->url = NULL; } - http->url = enc_string(cx, url, NULL); + http->url = (char *)js_to_string(cx, url).c_str(); if(http->url == NULL) { JS_ReportErrorUTF8(cx, "Failed to encode URL."); goto done; @@ -238,14 +236,12 @@ http_open(JSContext* cx, JSObject* req, JS::Value mth, JS::Value url, JS::Value curl_slist_free_all(http->req_headers); http->req_headers = NULL; } - // Disable Expect: 100-continue http->req_headers = curl_slist_append(http->req_headers, "Expect:"); ret = true; done: - if(method) free(method); return ret; } @@ -271,7 +267,7 @@ http_set_hdr(JSContext* cx, JSObject* req, JS::Value name, JS::Value val) goto done; } - keystr = enc_string(cx, name, NULL); + keystr = (char *)js_to_string(cx, name).c_str(); if(!keystr) { JS_ReportErrorUTF8(cx, "Failed to encode header name."); @@ -284,7 +280,7 @@ http_set_hdr(JSContext* cx, JSObject* req, JS::Value name, JS::Value val) goto done; } - valstr = enc_string(cx, val, NULL); + valstr = (char *)js_to_string(cx, val).c_str(); if(!valstr) { JS_ReportErrorUTF8(cx, "Failed to encode header value."); @@ -304,8 +300,6 @@ http_set_hdr(JSContext* cx, JSObject* req, JS::Value name, JS::Value val) ret = true; done: - if(keystr) free(keystr); - if(valstr) free(valstr); if(hdrbuf) free(hdrbuf); return ret; } @@ -324,7 +318,7 @@ http_send(JSContext* cx, JSObject* req, JS::Value body) } if(!body.isUndefined()) { - bodystr = enc_string(cx, body, &bodylen); + bodystr = (char *)js_to_string(cx, body).c_str(); if(!bodystr) { JS_ReportErrorUTF8(cx, "Failed to encode body."); goto done; @@ -334,7 +328,6 @@ http_send(JSContext* cx, JSObject* req, JS::Value body) ret = go(cx, req, http, bodystr, bodylen); done: - if(bodystr) free(bodystr); return ret; } @@ -463,13 +456,12 @@ go(JSContext* cx, JSObject* obj, HTTPData* http, char* body, size_t bodylen) tmp = JS_GetReservedSlot(obj, 0); - if(!(referer = enc_string(cx, tmp, NULL))) { + if(!(referer = (char *)js_to_string(cx, tmp).c_str())) { JS_ReportErrorUTF8(cx, "Failed to encode referer."); if(state.recvbuf) JS_free(cx, state.recvbuf); return ret; } curl_easy_setopt(HTTP_HANDLE, CURLOPT_REFERER, referer); - free(referer); if(http->method < 0 || http->method > OPTIONS) { JS_ReportErrorUTF8(cx, "INTERNAL: Unknown method."); @@ -533,6 +525,7 @@ go(JSContext* cx, JSObject* obj, HTTPData* http, char* body, size_t bodylen) if(state.recvbuf) { state.recvbuf[state.read] = '\0'; jsbody = dec_string(cx, state.recvbuf, state.read+1); + //jsbody = string_to_js(cx, std::string(state.recvbuf, state.read)); if(!jsbody) { // If we can't decode the body as UTF-8 we forcefully // convert it to a string by just forcing each byte @@ -563,7 +556,6 @@ go(JSContext* cx, JSObject* obj, HTTPData* http, char* body, size_t bodylen) if(state.recvbuf) JS_free(cx, state.recvbuf); return ret; } - ret = true; if(state.recvbuf) JS_free(cx, state.recvbuf); return ret; @@ -638,7 +630,8 @@ recv_header(void *ptr, size_t size, size_t nmem, void *data) } // Append the new header to our array. - hdr = dec_string(state->cx, header, length); + + hdr = string_to_js(state->cx, std::string(header)); if(!hdr) { return CURLE_WRITE_ERROR; } |