~ubuntu-branches/ubuntu/lucid/curl/lucid-201101212007

« back to all changes in this revision

Viewing changes to tests/libtest/lib506.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-05-16 15:16:54 UTC
  • mto: (3.1.1 lenny) (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: james.westby@ubuntu.com-20070516151654-x9nkigtr2j0i8d0v
Tags: upstream-7.16.2
ImportĀ upstreamĀ versionĀ 7.16.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************************
 
2
 *                                  _   _ ____  _
 
3
 *  Project                     ___| | | |  _ \| |
 
4
 *                             / __| | | | |_) | |
 
5
 *                            | (__| |_| |  _ <| |___
 
6
 *                             \___|\___/|_| \_\_____|
 
7
 *
 
8
 * $Id: lib506.c,v 1.14 2007-02-04 12:12:02 giva Exp $
 
9
 */
 
10
 
1
11
#include "test.h"
2
12
#include <stdlib.h>
3
13
#include <ctype.h>
14
24
void unlock(CURL *handle, curl_lock_data data, void *useptr );
15
25
struct curl_slist *sethost(struct curl_slist *headers);
16
26
void *fire(void *ptr);
17
 
char *suburl(char *base, int i);
 
27
char *suburl(const char *base, int i);
18
28
 
19
29
/* struct containing data of a thread */
20
30
struct Tdata {
39
49
 
40
50
  switch ( data ) {
41
51
    case CURL_LOCK_DATA_SHARE:
42
 
      what = "share";  
 
52
      what = "share";
43
53
      break;
44
54
    case CURL_LOCK_DATA_DNS:
45
 
      what = "dns";  
 
55
      what = "dns";
46
56
      break;
47
57
    case CURL_LOCK_DATA_COOKIE:
48
 
      what = "cookie";  
 
58
      what = "cookie";
49
59
      break;
50
60
    default:
51
61
      fprintf(stderr, "lock: no such data: %d\n", (int)data);
63
73
  (void)handle;
64
74
  switch ( data ) {
65
75
    case CURL_LOCK_DATA_SHARE:
66
 
      what = "share";  
 
76
      what = "share";
67
77
      break;
68
78
    case CURL_LOCK_DATA_DNS:
69
 
      what = "dns";  
 
79
      what = "dns";
70
80
      break;
71
81
    case CURL_LOCK_DATA_COOKIE:
72
 
      what = "cookie";  
 
82
      what = "cookie";
73
83
      break;
74
84
    default:
75
85
      fprintf(stderr, "unlock: no such data: %d\n", (int)data);
94
104
  CURLcode code;
95
105
  struct curl_slist *headers;
96
106
  struct Tdata *tdata = (struct Tdata*)ptr;
97
 
  CURL *curl = curl_easy_init();
 
107
  CURL *curl;
98
108
  int i=0;
99
109
 
 
110
  if ((curl = curl_easy_init()) == NULL) {
 
111
    fprintf(stderr, "curl_easy_init() failed\n");
 
112
    return NULL;
 
113
  }
 
114
 
100
115
  headers = sethost(NULL);
101
116
  curl_easy_setopt(curl, CURLOPT_VERBOSE,    1);
102
117
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, (void*)headers);
120
135
 
121
136
 
122
137
/* build request url */
123
 
char *suburl(char *base, int i)
 
138
char *suburl(const char *base, int i)
124
139
{
125
140
  return curl_maprintf("%s000%c", base, 48+i);
126
141
}
141
156
 
142
157
  user.text = (char *)"Pigs in space";
143
158
  user.counter = 0;
144
 
  
 
159
 
145
160
  printf( "GLOBAL_INIT\n" );
146
 
  curl_global_init( CURL_GLOBAL_ALL );
 
161
  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
 
162
    fprintf(stderr, "curl_global_init() failed\n");
 
163
    return TEST_ERR_MAJOR_BAD;
 
164
  }
147
165
 
148
166
  /* prepare share */
149
167
  printf( "SHARE_INIT\n" );
150
 
  share = curl_share_init();
 
168
  if ((share = curl_share_init()) == NULL) {
 
169
    fprintf(stderr, "curl_share_init() failed\n");
 
170
    curl_global_cleanup();
 
171
    return TEST_ERR_MAJOR_BAD;
 
172
  }
151
173
 
152
174
  if ( CURLSHE_OK == scode ) {
153
175
    printf( "CURLSHOPT_LOCKFUNC\n" );
171
193
  }
172
194
 
173
195
  if ( CURLSHE_OK != scode ) {
 
196
    fprintf(stderr, "curl_share_setopt() failed\n");
174
197
    curl_share_cleanup(share);
175
 
    return 2;
 
198
    curl_global_cleanup();
 
199
    return TEST_ERR_MAJOR_BAD;
176
200
  }
177
201
 
178
 
  
 
202
 
179
203
  res = 0;
180
204
 
181
205
  /* start treads */
182
206
  for (i=1; i<=THREADS; i++ ) {
183
 
    
 
207
 
184
208
    /* set thread data */
185
209
    tdata.url   = suburl( URL, i ); /* must be curl_free()d */
186
210
    tdata.share = share;
196
220
 
197
221
  /* fetch a another one and save cookies */
198
222
  printf( "*** run %d\n", i );
199
 
  curl = curl_easy_init();
 
223
  if ((curl = curl_easy_init()) == NULL) {
 
224
    fprintf(stderr, "curl_easy_init() failed\n");
 
225
    curl_share_cleanup(share);
 
226
    curl_global_cleanup();
 
227
    return TEST_ERR_MAJOR_BAD;
 
228
  }
200
229
 
201
230
  url = suburl( URL, i );
202
231
  headers = sethost( NULL );
227
256
  curl_slist_free_all( headers );
228
257
 
229
258
  curl_free(url);
230
 
  
 
259
 
231
260
  /* free share */
232
261
  printf( "SHARE_CLEANUP\n" );
233
262
  scode = curl_share_cleanup( share );
234
263
  if ( scode!=CURLSHE_OK )
235
264
    fprintf(stderr, "curl_share_cleanup failed, code errno %d\n",
236
265
            (int)scode);
237
 
  
 
266
 
238
267
  printf( "GLOBAL_CLEANUP\n" );
239
268
  curl_global_cleanup();
240
 
 
 
269
 
241
270
  return res;
242
271
}
243
272