diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2010-06-01 12:24:30 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2010-06-01 12:24:30 +0000 |
commit | bef69365a14f57dff5a73e1a1fb38f10fc4e067f (patch) | |
tree | 2f12f5892f76528f6652e4e6a8aef24e61a1d4b1 /src/transport | |
parent | 419e5c8eb9115e6a91bdfe8573be570a5be3cc48 (diff) | |
download | gnunet-bef69365a14f57dff5a73e1a1fb38f10fc4e067f.tar.gz gnunet-bef69365a14f57dff5a73e1a1fb38f10fc4e067f.zip |
Diffstat (limited to 'src/transport')
-rw-r--r-- | src/transport/test_plugin_transport_http.c | 80 |
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 | */ |
178 | static int sent; | 178 | static int sent; |
179 | 179 | ||
180 | CURL *curl_handle; | ||
181 | |||
182 | /** | ||
183 | * cURL Multihandle | ||
184 | */ | ||
185 | static 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 | */ | ||
279 | struct HTTP_Message | ||
280 | { | ||
281 | char *buf; | ||
282 | size_t pos; | ||
283 | size_t size; | ||
284 | size_t len; | ||
285 | }; | ||
286 | |||
287 | int done; | ||
288 | static size_t | ||
289 | putBuffer (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 | |||
303 | static 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 | */ | ||
317 | static 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, ©Buffer); | ||
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; |