gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r11590 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r11590 - gnunet/src/transport
Date: Tue, 1 Jun 2010 14:24:30 +0200

Author: wachs
Date: 2010-06-01 14:24:30 +0200 (Tue, 01 Jun 2010)
New Revision: 11590

Modified:
   gnunet/src/transport/test_plugin_transport_http.c
Log:


Modified: gnunet/src/transport/test_plugin_transport_http.c
===================================================================
--- gnunet/src/transport/test_plugin_transport_http.c   2010-05-31 22:17:44 UTC 
(rev 11589)
+++ gnunet/src/transport/test_plugin_transport_http.c   2010-06-01 12:24:30 UTC 
(rev 11590)
@@ -177,7 +177,15 @@
  */
 static int sent;
 
+CURL *curl_handle;
+
 /**
+ * cURL Multihandle
+ */
+static CURLM *multi_handle;
+
+
+/**
  * Shutdown testcase
  */
 static void
@@ -265,8 +273,68 @@
   return GNUNET_TIME_UNIT_ZERO;
 }
 
+/**
+ *  Message to send using http
+ */
+struct HTTP_Message
+{
+  char *buf;
+  size_t pos;
+  size_t size;
+  size_t len;
+};
 
+ int done;
+static size_t
+putBuffer (void *stream, size_t size, size_t nmemb, void *ptr)
+{
+  unsigned int len;
+  struct HTTP_Message  * cbc = ptr;
+
+  len = cbc->len;
+
+  if (( cbc->pos == len) && (len < (size * nmemb)))
+    return 0;
+  memcpy(stream, cbc->buf, len);
+  cbc->pos = len;
+  return len;
+}
+
+static size_t copyBuffer (void *ptr, size_t size, size_t nmemb, void *ctx)
+{
+  struct HTTP_Message *cbc = ctx;
+
+  if (cbc->pos + size * nmemb > cbc->size)
+    return 0;                   /* overflow */
+  memcpy (&cbc->buf[cbc->pos], ptr, size * nmemb);
+  cbc->pos += size * nmemb;
+  return size * nmemb;
+}
+
 /**
+ * function to send data to server
+ */
+static int send_data(struct HTTP_Message *msg, char * url)
+{
+  struct HTTP_Message cbc;
+
+
+  curl_easy_setopt(curl_handle, CURLOPT_URL, url);
+  curl_easy_setopt(curl_handle, CURLOPT_PUT, 1L);
+  curl_easy_setopt (curl_handle, CURLOPT_WRITEFUNCTION, &copyBuffer);
+  curl_easy_setopt (curl_handle, CURLOPT_WRITEDATA, &cbc);
+  curl_easy_setopt (curl_handle, CURLOPT_READFUNCTION, &putBuffer);
+  curl_easy_setopt (curl_handle, CURLOPT_READDATA, &cbc);
+  curl_easy_setopt(curl_handle, CURLOPT_INFILESIZE_LARGE, (curl_off_t) 
msg->len);
+  //curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, (timeout.value / 1000 ));
+  //curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, 
HTTP_CONNECT_TIMEOUT);
+
+  curl_multi_add_handle(multi_handle, curl_handle);
+
+  return GNUNET_OK;
+}
+
+/**
  * Network format for IPv4 addresses.
  */
 struct IPv4HttpAddress
@@ -422,6 +490,7 @@
   const char * addr_str;
   unsigned int count_str_addr;
   unsigned int suggest_res;
+  unsigned int res;
 
   fail_pretty_printer = GNUNET_YES;
   fail_notify_address = GNUNET_YES;
@@ -524,6 +593,17 @@
   suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct 
IPv4HttpAddress));
   GNUNET_assert (GNUNET_SYSERR == suggest_res);
 
+  /* test sending to client */
+  multi_handle = curl_multi_init();
+
+
+  /*building messages */
+  struct HTTP_Message msg;
+
+
+  res = send_data (&msg, "http://localhost:12389/";);
+
+
   /* testing finished, shutting down */
   if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) 
&& (fail_addr_to_str == GNUNET_NO) )
     fail = 0;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]