diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2010-06-01 15:20:13 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2010-06-01 15:20:13 +0000 |
commit | e00a39456f1b8ccef52bb42bd9771d445f2db3c6 (patch) | |
tree | 98ea8b7e09adead80371a172ff9ac802b36e3479 /src | |
parent | f5ae5d5db80a3a6b88306cb21b95dec5e038e2da (diff) | |
download | gnunet-e00a39456f1b8ccef52bb42bd9771d445f2db3c6.tar.gz gnunet-e00a39456f1b8ccef52bb42bd9771d445f2db3c6.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/test_plugin_transport_http.c | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/src/transport/test_plugin_transport_http.c b/src/transport/test_plugin_transport_http.c index aba4183ef..d02c74e9a 100644 --- a/src/transport/test_plugin_transport_http.c +++ b/src/transport/test_plugin_transport_http.c | |||
@@ -168,6 +168,15 @@ struct HTTP_Transfer | |||
168 | */ | 168 | */ |
169 | size_t data_size; | 169 | size_t data_size; |
170 | 170 | ||
171 | unsigned char buf[2048]; | ||
172 | |||
173 | /** | ||
174 | * amount of bytes we recieved | ||
175 | */ | ||
176 | size_t pos; | ||
177 | |||
178 | size_t size; | ||
179 | |||
171 | }; | 180 | }; |
172 | 181 | ||
173 | struct Plugin_Address * addr_head; | 182 | struct Plugin_Address * addr_head; |
@@ -353,25 +362,34 @@ putBuffer (void *stream, size_t size, size_t nmemb, void *ptr) | |||
353 | 362 | ||
354 | static size_t copyBuffer (void *ptr, size_t size, size_t nmemb, void *ctx) | 363 | static size_t copyBuffer (void *ptr, size_t size, size_t nmemb, void *ctx) |
355 | { | 364 | { |
356 | struct HTTP_Message *cbc = ctx; | 365 | struct HTTP_Transfer * res = (struct HTTP_Transfer *) ctx; |
366 | |||
367 | res->data_size = size * nmemb; | ||
357 | 368 | ||
358 | if (cbc->pos + size * nmemb > cbc->size) | 369 | if (res->pos + size * nmemb > res->size) |
359 | return 0; /* overflow */ | 370 | return 0; /* overflow */ |
360 | memcpy (&cbc->buf[cbc->pos], ptr, size * nmemb); | 371 | memcpy (&res->buf[res->pos], ptr, size * nmemb); |
361 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Send completed. %s\n",cbc->buf); | 372 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Send completed. %s\n",res->buf); |
362 | cbc->pos += size * nmemb; | 373 | res->pos += size * nmemb; |
363 | return size * nmemb; | 374 | return size * nmemb; |
364 | } | 375 | } |
365 | 376 | ||
366 | static size_t header_function( void *ptr, size_t size, size_t nmemb, void *stream) | 377 | static size_t header_function( void *ptr, size_t size, size_t nmemb, void *stream) |
367 | { | 378 | { |
379 | struct HTTP_Transfer * res = (struct HTTP_Transfer *) stream; | ||
368 | char * tmp; | 380 | char * tmp; |
369 | unsigned int len = size * nmemb; | 381 | unsigned int len = size * nmemb; |
382 | |||
370 | tmp = GNUNET_malloc ( len+1 ); | 383 | tmp = GNUNET_malloc ( len+1 ); |
371 | memcpy(tmp,ptr,len); | 384 | memcpy(tmp,ptr,len); |
372 | //if (tmp[len-1]!='\0') | 385 | if (tmp[len-2] == 13) |
373 | // tmp[len]= '\0'; | 386 | tmp[len-2]= '\0'; |
374 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Header: %u :`%s'\n",len,tmp); | 387 | if (0==strcmp (tmp,"HTTP/1.1 404 Not Found")) |
388 | { | ||
389 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "404\n"); | ||
390 | res->http_result_code=404; | ||
391 | } | ||
392 | |||
375 | GNUNET_free (tmp); | 393 | GNUNET_free (tmp); |
376 | return size * nmemb; | 394 | return size * nmemb; |
377 | } | 395 | } |
@@ -526,7 +544,7 @@ static int send_data(struct HTTP_Message *msg, struct HTTP_Transfer * result, ch | |||
526 | curl_easy_setopt (curl_handle, CURLOPT_HEADERFUNCTION, &header_function); | 544 | curl_easy_setopt (curl_handle, CURLOPT_HEADERFUNCTION, &header_function); |
527 | curl_easy_setopt (curl_handle, CURLOPT_WRITEHEADER, result); | 545 | curl_easy_setopt (curl_handle, CURLOPT_WRITEHEADER, result); |
528 | curl_easy_setopt (curl_handle, CURLOPT_WRITEFUNCTION, ©Buffer); | 546 | curl_easy_setopt (curl_handle, CURLOPT_WRITEFUNCTION, ©Buffer); |
529 | curl_easy_setopt (curl_handle, CURLOPT_WRITEDATA, msg); | 547 | curl_easy_setopt (curl_handle, CURLOPT_WRITEDATA, result); |
530 | curl_easy_setopt (curl_handle, CURLOPT_READFUNCTION, &putBuffer); | 548 | curl_easy_setopt (curl_handle, CURLOPT_READFUNCTION, &putBuffer); |
531 | curl_easy_setopt (curl_handle, CURLOPT_READDATA, msg); | 549 | curl_easy_setopt (curl_handle, CURLOPT_READDATA, msg); |
532 | curl_easy_setopt(curl_handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t) msg->len); | 550 | curl_easy_setopt(curl_handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t) msg->len); |
@@ -808,7 +826,7 @@ run (void *cls, | |||
808 | msg->size = 2048; | 826 | msg->size = 2048; |
809 | msg->pos = 0; | 827 | msg->pos = 0; |
810 | msg->buf = GNUNET_malloc (2048); | 828 | msg->buf = GNUNET_malloc (2048); |
811 | 829 | no_ident.size=2048; | |
812 | 830 | ||
813 | res = send_data (msg, &no_ident, "http://localhost:12389/"); | 831 | res = send_data (msg, &no_ident, "http://localhost:12389/"); |
814 | 832 | ||