aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2010-06-01 12:24:30 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2010-06-01 12:24:30 +0000
commitbef69365a14f57dff5a73e1a1fb38f10fc4e067f (patch)
tree2f12f5892f76528f6652e4e6a8aef24e61a1d4b1 /src/transport
parent419e5c8eb9115e6a91bdfe8573be570a5be3cc48 (diff)
downloadgnunet-bef69365a14f57dff5a73e1a1fb38f10fc4e067f.tar.gz
gnunet-bef69365a14f57dff5a73e1a1fb38f10fc4e067f.zip
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/test_plugin_transport_http.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/transport/test_plugin_transport_http.c b/src/transport/test_plugin_transport_http.c
index 9eb952348..75af179ab 100644
--- a/src/transport/test_plugin_transport_http.c
+++ b/src/transport/test_plugin_transport_http.c
@@ -177,6 +177,14 @@ static int fail;
177 */ 177 */
178static int sent; 178static int sent;
179 179
180CURL *curl_handle;
181
182/**
183 * cURL Multihandle
184 */
185static CURLM *multi_handle;
186
187
180/** 188/**
181 * Shutdown testcase 189 * Shutdown testcase
182 */ 190 */
@@ -265,6 +273,66 @@ receive (void *cls,
265 return GNUNET_TIME_UNIT_ZERO; 273 return GNUNET_TIME_UNIT_ZERO;
266} 274}
267 275
276/**
277 * Message to send using http
278 */
279struct HTTP_Message
280{
281 char *buf;
282 size_t pos;
283 size_t size;
284 size_t len;
285};
286
287 int done;
288static size_t
289putBuffer (void *stream, size_t size, size_t nmemb, void *ptr)
290{
291 unsigned int len;
292 struct HTTP_Message * cbc = ptr;
293
294 len = cbc->len;
295
296 if (( cbc->pos == len) && (len < (size * nmemb)))
297 return 0;
298 memcpy(stream, cbc->buf, len);
299 cbc->pos = len;
300 return len;
301}
302
303static size_t copyBuffer (void *ptr, size_t size, size_t nmemb, void *ctx)
304{
305 struct HTTP_Message *cbc = ctx;
306
307 if (cbc->pos + size * nmemb > cbc->size)
308 return 0; /* overflow */
309 memcpy (&cbc->buf[cbc->pos], ptr, size * nmemb);
310 cbc->pos += size * nmemb;
311 return size * nmemb;
312}
313
314/**
315 * function to send data to server
316 */
317static int send_data(struct HTTP_Message *msg, char * url)
318{
319 struct HTTP_Message cbc;
320
321
322 curl_easy_setopt(curl_handle, CURLOPT_URL, url);
323 curl_easy_setopt(curl_handle, CURLOPT_PUT, 1L);
324 curl_easy_setopt (curl_handle, CURLOPT_WRITEFUNCTION, &copyBuffer);
325 curl_easy_setopt (curl_handle, CURLOPT_WRITEDATA, &cbc);
326 curl_easy_setopt (curl_handle, CURLOPT_READFUNCTION, &putBuffer);
327 curl_easy_setopt (curl_handle, CURLOPT_READDATA, &cbc);
328 curl_easy_setopt(curl_handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t) msg->len);
329 //curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, (timeout.value / 1000 ));
330 //curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, HTTP_CONNECT_TIMEOUT);
331
332 curl_multi_add_handle(multi_handle, curl_handle);
333
334 return GNUNET_OK;
335}
268 336
269/** 337/**
270 * Network format for IPv4 addresses. 338 * Network format for IPv4 addresses.
@@ -422,6 +490,7 @@ run (void *cls,
422 const char * addr_str; 490 const char * addr_str;
423 unsigned int count_str_addr; 491 unsigned int count_str_addr;
424 unsigned int suggest_res; 492 unsigned int suggest_res;
493 unsigned int res;
425 494
426 fail_pretty_printer = GNUNET_YES; 495 fail_pretty_printer = GNUNET_YES;
427 fail_notify_address = GNUNET_YES; 496 fail_notify_address = GNUNET_YES;
@@ -524,6 +593,17 @@ run (void *cls,
524 suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct IPv4HttpAddress)); 593 suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct IPv4HttpAddress));
525 GNUNET_assert (GNUNET_SYSERR == suggest_res); 594 GNUNET_assert (GNUNET_SYSERR == suggest_res);
526 595
596 /* test sending to client */
597 multi_handle = curl_multi_init();
598
599
600 /*building messages */
601 struct HTTP_Message msg;
602
603
604 res = send_data (&msg, "http://localhost:12389/");
605
606
527 /* testing finished, shutting down */ 607 /* testing finished, shutting down */
528 if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) && (fail_addr_to_str == GNUNET_NO) ) 608 if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) && (fail_addr_to_str == GNUNET_NO) )
529 fail = 0; 609 fail = 0;