File: ChangeLog

package info (click to toggle)
httperf 0.9.0-11
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,320 kB
  • sloc: sh: 8,789; ansic: 6,692; makefile: 29
file content (855 lines) | stat: -rw-r--r-- 27,839 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
2007-03-31  Ted Bullock <tbullock@canada.com>

	* *.c and *.h: Adjusted license to explicitly list HP copyright as
	Copyright 2000-2007 Hewlett-Packard Company

2007-02-07  Ted Bullock  <tbullock@canada.com>

	* AUTHORS: wsseslog crash fix was actually written by David Mosberger

2007-02-07  Ted Bullock  <tbullock@canada.com>

	* AUTHORS: Removed Durval Menezes from AUTHORS file since his fix
	has been re-written by Theodore Bullock

2007-02-07  Ted Bullock  <tbullock@canada.com>

	* *.c and *.h: Slightly adjusted license to explicitly point out AUTHORS file
	as official list of authors

2007-02-07  Ted Bullock  <tbullock@canada.com>

	* httperf.1: Added correction to man page to include a missing
	--wsess identification

2007-01-26  Ted Bullock  <tbullock@canada.com>

	* getopt.c and getopt1.c: Re-Added the to the build process
	httperf now compiles on Linux, OpenBSD, FreeBSD, Solaris, HP-UX 11i
	with cc and gcc and (with cc and gcc)

2007-01-26  Ted Bullock  <tbullock@canada.com>

	* Makefile.am: Revised Makefile.am for src directories to explicitly include the
	.h files to allow make distcheck to pass

2007-01-26  Ted Bullock  <tbullock@canada.com>

	* getopt.c and getopt1.c: Removed from build process

	* httperf.c: Wrapped call to getopt.h in pre-processor checks

2007-01-25  Ted Bullock  <tbullock@canada.com>

	* wsesslog.c: changed a sprintf call to the more secure snprintf

	* getopt.c: changed a sprintf call to the more secure snprintf

2007-01-20  Ted Bullock  <tbullock@canada.com>

	* autogen.sh: Included the shell script autogen.sh to compile the necessary 
	autotool components.
	
	* autogen.sh: Removed redundant configuration files from CVS, regenerate these
	with the autogen.sh script (recommend autoconf 2.60 and above)

	* ttest.c: Removed the ttest.c file from CVS

2007-01-16  Ted Bullock <tbullock@canada.com>
	* Build System: Updated build system to a more typical directory
	layout and wrote missing makefile.am files for automake

	* idleconn: Now installed along with the httperf executable

	* ttest: Remove program from build

2007-01-02  Ted Bullock <tbullock@canada.com>

	*License: Included openssl linking exception

2006-12-08  Ted Bullock <tbullock@canada.com>
	
	* Bug Fixes: Added a number of fixes from the mailing lists
	over the last 6 years.

	* compiler warnings: Compiler warnings in core.c and wsesslog.c
	
	* configuration: Fixes a problem with the "configure" setup
	where the "--prefix=" option wasn't being obeyed

	* zero length: Fixes bug in http.c (parse_header)with zero
	length content

	* Host Header: Identify machine by FQD rather than hostname

	* Persistent Connections: Added Persistent connections to HTTP 1.0
	requests

	* Robust alloca.h: Robust way to handle the header file that
	defines the alloca function <alloca.h> for linux and stdlib.h for
	BSD and others

	* Time Discrepancy: Fixed a discrepancy between the data produced
	by httperf and the documentation in regards to timing.

	* wsesslog Crash: Fixed a problem with the wsesslog crashing
	httperf due to an unhandled session failure from a burdened server

2000-10-31  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.8 released.

	* core.c (do_recv) [!HAVE_SSL]: Avoid referncing param.use_ssl.
	(do_send): Ditto.

	* core.c (core_ssl_connect): Print error message if SSL connect
	fails.  ERR_print_errors_fp() may not print anything if there
	error is due to, e.g., trying to connect to a non-existent port.

	* httperf.c (main): Initialize port to -1.  Once parameters have
	been processed, port defaults to 443 if SSL is in use, 80
	otherwise.

2000-10-30  David Mosberger  <davidm@hpl.hp.com>

	* httperf.man: Update man-page with new options (based on Martin's
	descriptions.

	* httperf.c (usage): Mention --port.

2000-10-27  David Mosberger  <davidm@hpl.hp.com>

	* httperf.man: Mention request summary in description of
	--print-request.

	* stat/print_reply.c (print_request): Print request header/content
	summary line.

	* httperf.c (usage): Bring in sync with implemented options
	(Martin's patch).
	(longopts): Order in alphabetical order (Martin's patch).

2000-10-25  David Mosberger  <davidm@hpl.hp.com>

	* stat/print_reply.c (flush_print_buf): New.
	(Call_Private_Data): New.
	(CALL_PRIVATE_DATA): New.
	(call_private_data_offset): New.
	(print_buf): Rewrite to support line-buffering and new output
	format.
	(call_destroyed): New.
	(print_reply_hdr): New (based on Martin's original version).
	(send_raw_data): Ditto.
	(recv_raw_data): Ditto.
	(recv_stop): Print reply summary (based on Martin's version).
	(init): Update to support the new print options.

	* httperf.c: Replace --print-replies/--print-request with more
	general versions of these options.

	* httperf.man: Add info on new --print-reply and --print-request
	options.

2000-10-24  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (main): Initialize ssl_ctx.
	(main): Use SSLv3_client_method() instead of SSLv23_client_method().
	The latter doesn't work.

	* httperf.h (ssl_ctx): New global variable.

	* conn.h [HAVE_SSL]: Drop unnecessary includes of <openssl/rsa.h>,
	<openssl/crypto.h>, <openssl/x509.h>, and <openssl/pem.h>.  Drop
	per-connect "ctx" member (it's global now).
	
	* conn.c (conn_init): Create SSL connection info and set cipher
	list (if necessary).

	* core.c (core_ssl_connect): Don't create SSL connection info
	here (done in conn.c now).  Always tell SSL about the
	file descriptor of the socket.

	* sess.c (sess_deinit) [HAVE_SSL]: Free SSL info if it exists.

	* gen/session.c (create_conn): If param.ssl_reuse is in effect,
	re-use SSL session if we have one or update session info with
	newly created SSL session.

	* httperf.c [HAVE_SSL]: Include <openssl/rand.h>.
	(main): Call RAND_seed() with a zero buffer.

2000-10-23  David Mosberger  <davidm@hpl.hp.com>

	* conn.c (conn_init): Don't initialize conn->ssl to zero---that
	has been done by object_new() already.

	* gen/session.c (create_conn): If reusing SSL session ids, create
	SSL structure and save SSL info in session structure.

	* sess.c (sess_deinit) [HAVE_SSL]: Free SSL session if it's
	non-NULL.

	* httperf.h: Declare "use_ssl" only if HAVE_SSL is defined.
	Add ssl_no_reuse and ssl_cipher_list.

	* httperf.c (struct longopts): Add --ssl-no-reuse and ssl-ciphers.
	(main): Handle --ssl-cipher_list and --ssl-no-reuse options.

2000-10-19  David Mosberger  <davidm@hpl.hp.com>

	* core.c (core_ssl_connect): Bring debug messages in sync with
	rest of httperf.  If s->ssl exists already, skip right to
	SSL_connect().  If SSL_connect() returns SSL_ERROR_WANT_READ or
	SSL_ERROR_WANT_WRITE, mark the appropriate fd set as active and
	return immediately to wait for more data.  Use
	ERR_print_errors_fp() to print SSL-related errors.
	(core_loop): Check for S_CONNECTING state before doing anything
	else.

	* README: Document configuration option "--enable-debug".

	* configure.in: Add support for --enable-debug.

2000-10-16  David Mosberger  <davidm@hpl.hp.com>

	* configure.in: Add AC_TYPE_LONG_LONG check (defines u_wide as
	"unsigned long long" if the compiler can grok it, "unsigned long"
	otherwise).

	* aclocal.m4: New file.

	* stat/basic.c: Include "config.h".
	(struct basic): Change type of hdr_bytes_received,
	reply_bytes_received, and footer_bytes_received from
	size_t to u_wide.
	(dump): Change type of total_size to u_wide.

2000-10-11  David Mosberger  <davidm@hpl.hp.com>

	* httperf.h (VERSION): Change to 0.8beta.

	* configure.in: New file.
	* Makefile.in: Ditto.
	* stat/Makefile.in: Ditto.
	* gen/Makefile.in: Ditto.
	* lib/Makefile.in: Ditto.

2000-08-29  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (main): Call core_exit() on a SIGINT.

2000-08-21  David Mosberger  <davidm@hpl.hp.com>

	* core.c (core_init): Bound maximum number of open files to
	FD_SETSIZE.

2000-04-25  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (main): Add a call to fpsetmask(0) to get non-finite
	IEEE arithmetic to work on older versions of FreeBSD.

1998-12-21  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.7 released.

	* Makefile (install): New make target.

	* httperf.h (VERSION): Define as "0.7".

	* gen/wsesslog.c (parse_config): Remove blank in sscanf() format
	since this caused problems on FreeBSD and NetBSD.  This bug was
	reported by Stephane Eranian.

1998-12-08  David Mosberger  <david_mosberger@hp.com>

	* httperf.c (struct longopts): Add option "method".
	(usage): Document option --method.
	(main): Handle --method.

	* httperf.h (struct Cmdline_Params): New member "method".

	* gen/misc.c: Renamed from add_header.c.  This file now implements
	both --add-header and --method.

1998-11-23  David Mosberger  <david_mosberger@hp.com>

	* httperf.c (longopts): New option "add-header".
	(main): Handle --add-header.

	* httperf.h (struct Cmdline_Params): New member
	"additional_header".

	* gen/add_header.c: New file.

1998-09-18  David Mosberger  <davidm@hpl.hp.com>

	* gen/session.c (call_done):
	(conn_failed): Call create_conn() instead of sess_failure() in
	case param.retry_on_failure is set and the connection has not been
	successful (received at least one good response)

	* gen/wsess.c (call_destroyed): Call sess_dec_ref() only if
	session didn't fail.

1998-09-14  David Mosberger  <davidm@hpl.hp.com>

	* README: Replace "session" with "connection" and "call" with
	"request" to reflect current terminology (reported by Christian
	Petit).  Also fixed various other typos and grammatical problems.

1998-09-11  David Mosberger  <davidm@hpl.hp.com>

	* gen/session.c (call_done): When param.retry_on_failure is set,
	re-issue call instead of causing session to fail.

	* httperf.c (usage): Add --retry-on-failure option.
	(struct longopts): Ditto.

	* httperf.man: Document --retry-on-failure option.

1998-07-23  David Mosberger  <davidm@hpl.hp.com>

	* stat/sess_stat.c: Use sess->failed instead of maintaining
	private session-failure flag.

1998-07-21  David Mosberger  <davidm@hpl.hp.com>

	* sess.c (sess_failure): Don't signal EV_SESS_FAILED more than
	once per session.

	* core.c (do_send): Clear c->recvq_next.  This is necessary now
	because the same call may be issued multiple times (due to
	connection failures).  Hence there is no longer a guarantee that
	c->recvq_next has been cleared by object_new().
	(do_send): Rename s to conn and c to call.

1998-07-20  David Mosberger-Tang  <David.Mosberger@acm.org>

	* core.c (do_recv): Set s->state to S_REPLY_DONE when done with an
	HTTP/1.0 response (mirrors code in http_process_reply_bytes()).
	(do_recv): No need to check for nread == 0.

	* stat/basic.c (init): Print basic.conn_lifetime_min only if
	basic.num_lifetimes > 0.

	* core.c (core_close): Fix typo (call -> all).

1998-07-08  David Mosberger  <davidm@hpl.hp.com>

	* core.c (do_send): Set s->state to S_REPLY_STATUS only if this is
	the first send---we don't want to interfere with the parsing of an
	in-progress reply.

1998-06-19  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.6 released.

	* gen/wsesslog.c (issue_calls): Limit `to_create' by the number
	of calls that the session can queue.

	* gen/session.c (session_max_qlen): New function.
	(session_current_qlen): Ditto.
	(max_qlen): New variable.

	* httperf.man: Fix typos.

1998-06-18  David Mosberger  <davidm@hpl.hp.com>

	* gen/session.c (MAX_CONN): Up MAX_CONN to 16.

	* object.c (object_new): panic() instead of assert(0) when
	encountering an unknown object type.

	* gen/wsesslog.c (user_think_time_expired): Remove stale comment.

	* gen/sess_cookie.c (struct Call_Private_Data): New member cookie.
	(call_recv_hdr): Remove padding bogosity.
	(call_issue): Copy cookie from session to call object.

1998-06-17  David Mosberger  <davidm@hpl.hp.com>

	* timer.c (timer_cancel): Instead of an assertion failure, print a
	message on stderr when timer_cancel(t) is called from within a
	timeout handler t.

	* Feedback from Dick Carter:
	* gen/wsesslog.c (parse_config): Remove stale comment.
	* httperf.h: Fix typo in comment for min_iat.
	* httperf.c (usage): Fix typo in --period args.
	* call.c (call_append_request_header): Fix typo in debug message.

1998-06-09  David Mosberger  <davidm@hpl.hp.com>

	* stat/print_reply.c: New file.
	* stat/sess_stat.c: Ditto.

	* stat/wsess_stat.c: Remove.

	* stat/basic.c: Move stats macros into stats.h.
	(RATE_INTERVAL): Remove.
	(interval_start): Ditto.
	(perf_sample): Rename from sample_rate().
	(conn_fail): Count EPIPE as a `connection reset' error.
	(init): Register perf_sample as handler for EV_PERF_SAMPLE.
	Remove scheduling of performance sampling timer.
	(dump): Print connection lifetime histogram only if verbose > 1.
	Print average connection length in number of replies/connection.
	
	* stat/stats.h: New file.

	* stat/basic.c: Add copyright message.

	* stat/Makefile (libstat.a): Mention sess_stat.o and
	print_reply.o.

	* object.c: New file.
	* object.h: Ditto.
	* sess.c: Ditto.
	* sess.h: Ditto.

	* httperf.h (VERSION): Up version number to 0.6.
	(object_is_conn): Remove (now in object.h).
	(object_is_call): Ditto.
	(enum Object_Type): Ditto.
	(struct Object): Ditto.
	(object_type_size): Ditto.
	(struct Cmdline_Params): New mebers max_piped, max_conns,
	print_replies, and session_cookies.

	* httperf.c (perf_sample_start): New variable to keep track of
	when latest sample interval started.
	(struct longopts): Add entries for max-connections,
	max-piped-calls, print-replies, and session-cookies.
	(usage): Update usage() message.
	(perf_sample): New function.
	(main): Remove uri_wsesslog generator.  Add sess_stat stats
	collector.  Handle --max-connections, --max-piped, --print-replies
	and --session-cookies. Start performance sampling timer.

	* http.c (get_line): Use sizeof (s->line_buf) instead of
	s->line_buf_size.
	(parse_status_line): Do strcmp() to find out whether call
	was a HEAD request.  Ignore `100 Continue' replies.

	* gen/wsesslog.h: Remove.

	* gen/wsess.c: Modify to take advantage of session manager
	(gen/session.c).

	* gen/wsesslog.c: Modify to take advantage of session manager
	and merge with uri_wsesslog.c.

	* gen/uri_wlog.c (set_uri): Use call_set_uri().
	* gen/uri_wset.c (set_uri): Ditto.

	* gen/uri_fixed.c (uri_len): New variable.
	(set_uri): Use call_set_uri().
	(init): Initialize uri_len.

	* gen/session.c: New file.
	* gen/session.h: Ditto.

	* gen/sess_cookie.c: New file (based on wsess.c).

	* gen/conn_rate.c: File renamed from sess_rate.c.

	* gen/call_seq.c: Modify to take advantage of reference counting.

	* gen/Makefile (libgen.a): Remove uri_wsesslog (it's part of
	wsesslog now).

	* gen/uri_wsesslog.c: Remove.
	* gen/uri_wsesslog.h: Ditto.
	
	* event.h (Event_Type): New member EV_PERF_SAMPLE for performance
	sampling (invoked once every 5 seconds).  Rename EV_USER_NEW to
	EV_SESS_NEW and EV_USER_DESTROYED to EV_SESS_DESTROYED.  New
	member EV_SESS_FAILED that is signalled when a session fails.

	* core.c (do_send): Remove left-over assert()ion.
	(do_send): Preserve io vector element that is being sent in
	iov_saved.  Call call_dec_ref() when the connection is closing.
	(recv_done): Rename `c' to `call' and invoke call_dec_ref().
	(do_recv): Call conn_failure() only if errno != EAGAIN (for Linux).
	(core_send): Add `conn' argument.  Fill in req.iov[IE_HOST] and
	req.iov[IE_PROTL] only (rest has been filled in by call_set_* macros).
	Call call_inc_ref() once the call is ready.
	(core_close): Rename `s' to `conn'.  Destroy pending calls calls
	on the sendq and recvq by calling call_dec_ref().  Call conn_dec_ref()
	at the end.
	(core_loop): Obtain a reference to the connection object for the
	duration of read & write processing.

	* conn.h: Include <object.h>.
	(MAX_HDR_LINE_LEN): New macro.
	(struct Conn): Remove member first_owned and line_size.  Replace
	line_buf pointer with line_buf array.
	(conn_init): Declare.
	(conn_deinit): Ditto.
	(conn_new): New macro.
	(conn_inc_ref): Ditto.
	(conn_dec_ref): Ditto.

	* conn.c: Remove include of <errno.h> and <event.h>.
	(conn_new): Remove.
	(conn_destroy): Ditto.
	(conn_init): New function.
	(conn_deinit): Ditto.

	* call.h: (enum HTTP_Method): Remove.
	Include <object.h>.
	(struct Call): Remove members loc_len, loc, uri_len, uri,
	orig_host, extra_hdrs, contents_len, contents.  New member:
	iov_saved.
	(call_init): Declare.
	(call_deinit): Ditto.
	(call_new): New macro.
	(call_inc_ref): Ditto.
	(call_dec_ref): Ditto.
	(call_set_method): Ditto.
	(call_set_location): Ditto.
	(call_set_uri): Ditto.
	(call_set_contents): Ditto.

	* call.c (call_method_name): Remove.
	(free_call_list): Remove.
	(call_new): Remove.
	(call_init): New function.
	(call_deinit): Ditto.
	(call_append_request_header): Fill req.iov[IE_FIRST_HEADER +
	num_hdrs] instead of req.extra_hdrs[num_hdrs].

	* Makefile (HTTPERF): Mention object and sess.

1998-05-29  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.5 released.

	* core.c (core_send): Fix setup of IE_METHOD and insert blank
	character in IE_BLANK.

	* call.h (enum IOV_Element): Add IE_BLANK.

1998-05-27  David Mosberger  <davidm@hpl.hp.com>

	* timer.c: Rename t_next to t_curr.
	(timer_tick): Set t_next _after_ invoking the callback.  This
	allows the callback to cancel all other timers (except itself).
	(timer_cancel): Add assertion to ensure that timer_cancel() is
	not called from within the handler of a given timer.

	* httperf.h (enum Dist_Type): New type.
	(struct Rate_Info): Ditto.
	(struct Cmdline_Params): Change type of RATE member from Time to
	Rate_Info.  New member WSESSLOG.
	(panic): Declare.

	* httperf.h (VERSION): Up version number to 0.5.

	* httperf.c: Include <ctype.h> and <stdarg.h>.  New options:
	close-with-reset, period, wsesslog.
	(usage): Add usage message for new options.
	(panic): New function.
	(main): Declare wsesslog, uri_wsesslog, and wsesslog_stat.
	Initialize param.rate.dist with DETERMINISTIC.  Handle --period
	and --wsesslog options.  Fix typo: user think time is 3rd, not 4th
	parameter in wsess parameter list.
	(main): Call timer_tick() after initializating the statistic
	collectors and workload generators so our notion of the current
	time is reasonably accurate.

	* gen/wsess.c (req_create): Use call_append_request_header().
	(start): Initialize rg_sess.rate with &param.rate.

	* gen/uri_wsesslog.h: New file (by Dick Carter).
	* gen/uri_wsesslog.c: Ditto.
	* gen/wsesslog.h: Ditto.
	* gen/wsesslog.c: Ditto.

	* gen/uri_wlog.c: Drop inclusion of <stdarg.h>.
	Move panic() from here to httperf.c.

	* gen/sess_rate.c (start): Initialize rg.rate with &param.rate.

	* gen/rate.h: New member next_interarrival_time.  New member
	xsubi.  Replace PERIOD member with RATE member.
	(rate_generator_stop): Drop second argument (RATE).

	* gen/rate.c: Include <math.h>, <stdio.h>, and <stdlib.h>.
	(next_arrival_time_det): New function.
	(next_arrival_time_uniform): Ditto.
	(next_arrival_time_exp): Ditto.
	(tick): Invoke (*next_arrival_time)() to determine next delay.
	(rate_generator_start): Initialize rg->xsubi based on
	param.client.id.  Initialize rg->next_interarrival_time based on
	desired distribution.

	* gen/Makefile (libgen.a): Mention wsesslog.o and uri_wsesslog.o

	* core.c (core_connect): Don't rely on realloc(0, SIZE) doing the
	right thing.
	(core_connect): Clear newly allocated sd_to_conn elements after
	allocating them.
	(core_send): Use call_method_name.  Copy in defined
	c->req.extra_hdrs[i] iovecs.  Copy in IE_CONTENT iovec.

	* call.h: New value HM_LEN.
	(MAX_EXTRA_HEADERS): New macro.  Replace IE_HEADERS with
	IE_FIRST_HEADER and IE_LAST_HEADER.  Make extra_hdrs an array of
	`struct iovec'.  New member num_extra_hdrs.
	(call_append_request_header): Declare new function.

	* call.c: New array.
	(call_append_request_header): New function.

1998-05-26  David Mosberger  <davidm@hpl.hp.com>

	* COPYRIGHT: Add 1998 as copyright year.

	* stat/basic.c (dump): If no connections have been created, print
	0.0 for minimm connection lifetime.  This avoids a core-dump under
	FreeBSD, which seems to have a problem printing IEEE infinity.

1998-05-22  David Mosberger  <davidm@hpl.hp.com>

	* call.c (method_name): New variable.

1998-04-27  David Mosberger  <davidm@hpl.hp.com>

	* core.c (do_recv): Ignore EAGAIN errors---Linux 2.0.32 sometimes
	returns EAGAIN on a read() if a previous write() resulted in
	EAGAIN.

	* AUTHORS: New file.

1998-03-24  David Mosberger  <davidm@hpl.hp.com>

	* gen/wsess.c (call_done): Also fall back to non-persistent
	session if c->req.version < HTTP/1.1.

1998-03-18  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (usage): Fix typo: --recv-buffer -> --send-buffer.

	* gen/wsess.c (dump): Rename "Sess" to "Session" in statistics
	output.

	* core.c (core_connect): Turn on closing with RESET only when
	param.close_with_reset is set.

1998-03-17  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (dump): In "Total" line, rename "call" to "req".

	* Version 0.41 released.

	* core.c: Include <sys/resource.h> after <sys/types.h> to get it
	to compile under FreeBSD (which seems to have a broken libc).

	* stat/basic.c (dump): Complete renaming of "session" to "call".
	Rename "Call" to "Request".

1998-03-16  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.4 released.

	* httperf.h (VERSION): Change version number to 0.4.

	* httperf.c: (longopts): Add --http-version.
	(main): Initialize param.http_version to HTTP/1.  Support parsing
	of --http-version option.  Echo --http-version option if version
	other than 1.1 is selected.

	* httperf.h (struct Cmdline_Params): New member HTTP_VERSION.

	* core.c (core_send): Support generation of HTTP/1.0 requests.

	* Patches by Stephane Eranian:

	* httperf.man: Mention --wlog parameter.

	* Makefile (clean): Use $(MAKE) instead of make.

1998-03-12  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c: Renamed Session to Conn to avoid confusion between
	user sessions and TCP connections.

1998-03-02  David Mosberger  <davidm@hpl.hp.com>

	* gen/wsess.c (user_destroy): Signal EV_USER_DESTROYED.
	(user_create): Signal EV_USER_NEW.
	(start): Register rate-generator with event EV_USER_DESTROYED
	instead of EV_SESSION_DESTROYED.

	* event.h: New events EV_USER_NEW and EV_USER_DESTROYED.
	* event.c: Ditto.

1998-02-27  David Mosberger  <davidm@hpl.hp.com>

	* session.h: Remove unused first_call member.

1998-02-26  David Mosberger  <davidm@hpl.hp.com>

	* gen/wsess.c (call_recv_hdr): Always check for Connection: and
	Set-Cookie: headers (not just for first call).
	(req_create): Modify to support bursts.
	(user_connect): Ditto.
	(sess_destroyed): Ditto.
	(call_destroyed): Ditto.

1998-02-25  David Mosberger  <davidm@hpl.hp.com>

	* core.c (lffs): Fix lffs() so it returns 0 when no bits at all
	are set in a 64 bit long.
	(set_active): Set recvq timeout if timeout==0.0 (the old code failed
	to timeout connections that were waiting for replies).

1998-02-23  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.3 released.

	* timer.c (timer_now_forced): New function.

	* httperf.h (Cmdline_params): New member burst_len.

	* httperf.c: New option --burst-length.  At present, only
	gen/call_seq.c supports this (gen/wsess does not).

	* gen/wsess.c (struct User): New members: found_close_hdr,
	conn_start, call_start, and cookie.
	(req_create): Insert cookie as extra header if there is one.
	(call_recv_hdr): New function.  Looks for "Connection: close" and
	"Set-Cookie:" headers.

	* gen/call_seq.c (Sess_Private_Data): New member "num_finished".
	(issue_calls): Add support for --burst-len parameter.
	(call_destroyed): Ditto.

	* core.c (SYSCALL): Call timer_now_forced() instead of timer_now().
	(core_connect): Keep track of longest back-to-back burst.
	(core_connect): Set SO_LINGER option so that TCP RST is sent when
	closing the socket.  This avoids the client melting down on
	HP-UX 10.20 due to a large number of TCP connections in TIME_WAIT
	state (HP-UX is broken as far as bind()/connect() is concerned when
	there are many TCP control blocks).
	(core_exit): Print maximum connect burst length.

	* core.c (max_burst_len): New variable to keep track of longest
	back-to-back burst generated (large bursts are usually a sign of
	the client being overloaded).

1998-02-13  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (sess_fail): Print one unexpected error number per
	execution, independent of DBG.

1998-02-06  David Mosberger  <davidm@hpl.hp.com>

	* core.c (do_send): Maintain sendq_tail & recvq_tail.
	(core_send): Ditto.
	(recv_done): Ditto.

	* session.h (Session): New members SENDQ_TAIL and RECVQ_TAIL.

	* core.c (set_active): Set watchdog timer to the minimum of the
	timeout of the request being sent and that being received (if such
	requests exist).
	(do_send): Set c->timeout.
	(core_connect): Ditto.
	(core_send): Ditto.

	* call.h: Replace (unused) WATCHDOG member with TIMEOUT.

	* timer.c (timer_schedule): Handle negative delays gracefully.

1998-01-28  David Mosberger  <davidm@hpl.hp.com>

	* Version 0.2 released to SixFlags team.

1998-01-26  David Mosberger  <davidm@hpl.hp.com>

	* gen/call_seq.c (sess_closed): New function.
	(init): Register sess_closed() so we notice when session closes
	prematurely.

1998-01-21  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (main): Don't quit after printing version
	information---it's useful to run a test and have this info as
	well.

1998-01-14  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (dump): Add num_sock_reset to total error count.

1998-01-12  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (struct basic): New member num_sock_reset.
	(sess_fail): Increment num_sock_reset for ECONNRESET.
	(dump): Print num_sock_reset.

	* core.c (do_recv): Call session_failure() when reading < 0 bytes.

	* stat/basic.c (sess_fail): Print error number when getting an
	unexpected errno and DBG > 0.

1998-01-09  David Mosberger  <davidm@hpl.hp.com>

	* httperf.c (main): Print only one newline (second newline is
	printed by stat collectors).

	* stat/basic.c (dump): Print session lifetime histogram first
	(so it goes right after the rate output).

1998-01-08  David Mosberger  <davidm@hpl.hp.com>

	* core.c (port_get): Recode so port numbers are returned in
	strictly increasing order (until a wraparound after 65535 occurs).
	This avoids problems with NT 4.0 which disallows reusing the port
	pair of a properly shut down TCP connection (which creates
	problems when testing an NT server with clients running on HP-UX
	or similar platforms).

1998-01-07  David Mosberger  <davidm@hpl.hp.com>

	* gen/sess_rate.c: Adapt to use rate.c.

	* timer.c (timer_schedule): Adjust "delay" if realtime has grown
	bigger than next_tick (meaning that "spoke" is behind).

	* call.c (call_destroy): prev wasn't updated in the search loop.

1998-01-06  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (dump): Print minmum rate as zero if there are no
	rate samples.

1997-12-23  David Mosberger  <davidm@hpl.hp.com>

	* stat/basic.c (struct basic): Add members num_reply_rates,
	reply_rate_sum, reply_rate_sum2, reply_rate_min, and
	reply_rate_max.
	(interval_start, num_replies): New vars.
	(sample_rate): New function to sample reply rate.
	(init): Schedule rate sampler.
	(dump): Print min, avg, max, and stddev of sampled reply rate.

	* httperf.c: Add --client and --think-timeout options.

1997-12-17  David Mosberger  <davidm@hpl.hp.com>

	* http.c (parse_data): Return TRUE to indicate that all bytes
	(of present chunk) have been received (instead of setting
	state to S_REPLY_DONE).

	* httperf.h (ALIGN): Fix macro (need AND with _complement_...).

	* http.c (xfer_chunked): Fix typo: check for content_bytes >=
	content_length (not vice versa).

	* uri_wset.c (set_uri): Fix uri_len computation.

	* sess_rate.c (destroyed): Fix typo: test for param.rate <= 0 (not
	<0).