Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package siege for openSUSE:Factory checked 
in at 2025-07-30 11:46:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/siege (Old)
 and      /work/SRC/openSUSE:Factory/.siege.new.13279 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "siege"

Wed Jul 30 11:46:21 2025 rev:13 rq:1296510 version:4.1.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/siege/siege.changes      2023-01-17 
17:36:01.921428185 +0100
+++ /work/SRC/openSUSE:Factory/.siege.new.13279/siege.changes   2025-07-30 
11:47:31.112038791 +0200
@@ -1,0 +2,8 @@
+Tue Jul  8 10:16:00 UTC 2025 - pgaj...@suse.com
+
+- version update to 4.1.7
+- added patches
+  https://github.com/JoeDog/siege/issues/248
+  + siege-gcc15.patch
+
+-------------------------------------------------------------------

Old:
----
  siege-4.1.6.tar.gz

New:
----
  siege-4.1.7.tar.gz
  siege-gcc15.patch

----------(New B)----------
  New:  https://github.com/JoeDog/siege/issues/248
  + siege-gcc15.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ siege.spec ++++++
--- /var/tmp/diff_new_pack.xdO2Xi/_old  2025-07-30 11:47:31.756065433 +0200
+++ /var/tmp/diff_new_pack.xdO2Xi/_new  2025-07-30 11:47:31.760065598 +0200
@@ -18,13 +18,15 @@
 
 
 Name:           siege
-Version:        4.1.6
+Version:        4.1.7
 Release:        0
 Summary:        HTTP Regression Testing/Benchmarking Utility
 License:        GPL-2.0-or-later
 Group:          Productivity/Networking/Web/Utilities
 URL:            https://www.joedog.org/siege-home/
 Source:         http://download.joedog.org/siege/siege-%{version}.tar.gz
+# https://github.com/JoeDog/siege/issues/248
+Patch0:          siege-gcc15.patch
 BuildRequires:  perl
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(openssl)
@@ -42,7 +44,7 @@
 3.0.0 it also supports FTP.
 
 %prep
-%setup -q
+%autosetup -p1
 
 %build
 %configure \

++++++ siege-4.1.6.tar.gz -> siege-4.1.7.tar.gz ++++++
++++ 3374 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/ChangeLog new/siege-4.1.7/ChangeLog
--- old/siege-4.1.6/ChangeLog   2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/ChangeLog   2024-11-14 14:57:23.000000000 +0100
@@ -1,6 +1,40 @@
 To email a contributor remove "DELETE" from the email address.
 (The DELETEs are necessary as this list is published online.)
 
+2023/09/2023 Hennik Hunsaker https://github.com/danhunsaker
+ * src/setup.h             to change the size
+ * src/main.c              to check the size rather than use a hard coded value
+ * src/init.c              to check the size and offer half to the config; 
+ * src/version.c           Version increment: 4.1.7-b6
+
+2023/06/20 Jeroen Derks   https://github.com/Magentron
+ * src/cookie.c           Solves #223
+ * src/page.c             Solves #223
+ * src/version.c          Version increment: 4.1.7-b5
+
+2023/06/20 Jeroen Derks   https://github.com/Magentron
+ * src/cookie.c           Fixed integrity checks 
+ * src/version.c          Version increment: 4.1.7-b4
+
+2023/04/10 Jeffrey Fulmer https://www.joedog.org/support/
+ * src/cookie.c           Added siege attribute persistent
+ * src/cookie.h           Added public prototypes
+ * src/cookies.c          Added persistence for -g/--get cookies
+ * src/init.c             Added auth-urls for 403 challenges
+ * src/setup.h            Added auth-url array
+ * src/version.c          Version increment: 4.1.7-b3
+
+2023/04/04 Jeffrey Fulmer https://www.joedog.org/support/
+ * src/browser.c          Don't accept auth challenge if we have no creds
+ * src/auth.c             Return "" if we can't build a header
+ * src/auth.h             Added BOOLEAN auth_has_credentials
+ * src/version.c          Version increment: 4.1.7-b2
+
+2023/02/21 Kirit Sælensminde https://github.com/KayEss
+ * .gitignore             Added generated files
+ * src/main.c             Added precision to output metrics
+ * src/version.c          Version increment: 4.1.7-b1
+
 2023/01/05 Jeffrey Fulmer https://www.joedog.org/support/
  * src/version.c          Version increment: 4.1.6
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/configure.ac new/siege-4.1.7/configure.ac
--- old/siege-4.1.6/configure.ac        2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/configure.ac        2024-11-14 14:57:23.000000000 +0100
@@ -158,7 +158,7 @@
          SSL_INCLUDE="-I$dir/include/openssl -I$dir/include"
          SSL_LIBS="-lssl -lcrypto"
          AC_MSG_CHECKING([for OpenSSL version])
-         CPPFLAGS="$SSL_INCLUDE"
+         CPPFLAGS="$SSL_INCLUDE $CPPFLAGS"
          AC_EGREP_CPP(yes,[
            #include <openssl/opensslv.h>
            #if OPENSSL_VERSION_NUMBER >= 0x0090800fL 
@@ -185,7 +185,7 @@
     SSL_INCLUDE="-I$MYSSL/include/openssl -I$MYSSL/include"
     SSL_LIBS="-lssl -lcrypto"
     AC_MSG_CHECKING([for OpenSSL version])
-    CPPFLAGS="$SSL_INCLUDE"
+    CPPFLAGS="$SSL_INCLUDE $CPPFLAGS"
     AC_EGREP_CPP(yes,[
       #include <openssl/opensslv.h>
       #if OPENSSL_VERSION_NUMBER >= 0x0090800fL 
@@ -247,7 +247,7 @@
          Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include"
          Z_LIBS="-lz"
          AC_MSG_CHECKING([for ZLIB version])
-         CPPFLAGS="$Z_INCLUDE"
+         CPPFLAGS="$Z_INCLUDE $CPPFLAGS"
          AC_SUBST(Z_CFLAGS)
          AC_SUBST(Z_INCLUDE)
          AC_SUBST(Z_LDFLAGS)
@@ -263,7 +263,7 @@
     Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include"
     Z_LIBS="-lz"
     AC_MSG_CHECKING([for OpenSSL version])
-    CPPFLAGS="$Z_INCLUDE"
+    CPPFLAGS="$Z_INCLUDE $CPPFLAGS"
     AC_SUBST(Z_CFLAGS)
     AC_SUBST(Z_INCLUDE)
     AC_SUBST(Z_LDFLAGS)
@@ -332,6 +332,7 @@
 AC_CHECK_FUNCS(strdup)
 AC_CHECK_FUNCS(rand_r)
 AC_CHECK_FUNCS(localtime_r)
+AC_CHECK_FUNCS(getaddrinfo)
 AC_CHECK_FUNCS(gethostbyname_r)
 AC_CHECK_FUNCS(gmtime_r)
 AC_CHECK_FUNCS(getipnodebyname)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/doc/bombardment.1.in new/siege-4.1.7/doc/bombardment.1.in
--- old/siege-4.1.6/doc/bombardment.1.in        2023-01-05 16:53:01.000000000 
+0100
+++ new/siege-4.1.7/doc/bombardment.1.in        2024-11-14 15:01:38.000000000 
+0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -46,7 +46,7 @@
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
 ..
 .nr rF 0
 .if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{
-.    if \nF \{
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
 .        de IX
 .        tm Index:\\$1\t\\n%\t"\\$2"
 ..
-.        if !\nF==2 \{
+.        if !\nF==2 \{\
 .            nr % 0
 .            nr F 2
 .        \}
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BOMBARDMENT 1"
-.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "bombardment"
+.TH BOMBARDMENT 1 "2024-11-14" "JoeDog" "bombardment"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -167,7 +167,7 @@
     between requests.  The \f(CW$_PROGRAM\fR default is overridden by 
bombardment
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1)
+\&\fBsiege\fR\|(1), \fBsiege2csv\fR\|(1)
 .SH "AUTHOR"
 .IX Header "AUTHOR"
 Written by Peter Hutnick, et al.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/doc/siege.1.in new/siege-4.1.7/doc/siege.1.in
--- old/siege-4.1.6/doc/siege.1.in      2023-01-05 16:53:01.000000000 +0100
+++ new/siege-4.1.7/doc/siege.1.in      2024-11-14 15:01:38.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -46,7 +46,7 @@
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
 ..
 .nr rF 0
 .if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{
-.    if \nF \{
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
 .        de IX
 .        tm Index:\\$1\t\\n%\t"\\$2"
 ..
-.        if !\nF==2 \{
+.        if !\nF==2 \{\
 .            nr % 0
 .            nr F 2
 .        \}
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIEGE 1"
-.TH SIEGE 1 "2023-01-05" "JoeDog" "Siege Load Tester"
+.TH SIEGE 1 "2024-11-14" "JoeDog" "Siege Load Tester"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -405,7 +405,7 @@
 .SH "URL FORMAT"
 .IX Header "URL FORMAT"
 \&\f(CW$_PROGRAM\fR supports \s-1RFC 1738 URL\s0 formats but it takes pains to 
implement
-commonly used shortcuts for your convenience. In addition to \s-1RFC 1738 \s0
+commonly used shortcuts for your convenience. In addition to \s-1RFC 1738\s0 
 formats, siege introduces its own \s-1URL\s0 format to indicate protocol 
method.
 .PP
 An \s-1RFC 1738 URL\s0 looks like this:
@@ -565,7 +565,7 @@
 .PP
 This program is distributed in the hope that it will be useful, but 
 \&\s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of 
-\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the 
\s-1GNU \s0
+\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0  See the 
\s-1GNU\s0 
 General Public License for more details.
 .PP
 You should have received a copy of the \s-1GNU\s0 General Public License along 
@@ -573,9 +573,9 @@
 675 Mass Ave, Cambridge, \s-1MA 02139, USA.\s0
 .SH "AVAILABILITY"
 .IX Header "AVAILABILITY"
-The most recent released version of \f(CW$_PROGRAM\fR is available by \s-1HTTP 
\s0
+The most recent released version of \f(CW$_PROGRAM\fR is available by 
\s-1HTTP\s0 
 download:
   http://download.joedog.org/pub/siege
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIsiege.config\fR\|(1) \fIbombardment\fR\|(1) \fIsiege2csv\fR\|(1)
+\&\fBsiege.config\fR\|(1) \fBbombardment\fR\|(1) \fBsiege2csv\fR\|(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/doc/siege.config.1.in new/siege-4.1.7/doc/siege.config.1.in
--- old/siege-4.1.6/doc/siege.config.1.in       2023-01-05 16:53:01.000000000 
+0100
+++ new/siege-4.1.7/doc/siege.config.1.in       2024-11-14 15:01:38.000000000 
+0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -46,7 +46,7 @@
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
 ..
 .nr rF 0
 .if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{
-.    if \nF \{
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
 .        de IX
 .        tm Index:\\$1\t\\n%\t"\\$2"
 ..
-.        if !\nF==2 \{
+.        if !\nF==2 \{\
 .            nr % 0
 .            nr F 2
 .        \}
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIEGE.CONFIG 1"
-.TH SIEGE.CONFIG 1 "2023-01-05" "JoeDog" "siege.config utility"
+.TH SIEGE.CONFIG 1 "2024-11-14" "JoeDog" "siege.config utility"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -170,7 +170,7 @@
 or (at your option) any later version.
 .PP
 This program is distributed in the hope that it will be useful, but 
\s-1WITHOUT ANY WARRANTY\s0; without
-even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A 
PARTICULAR PURPOSE. \s0 See the \s-1GNU\s0
+even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A 
PARTICULAR PURPOSE.\s0  See the \s-1GNU\s0
 General Public License for more details.
 .PP
 You should have received a copy of the \s-1GNU\s0 General Public License along 
with this program; if not,
@@ -180,4 +180,4 @@
 \&\f(CW$_PROGRAM\fR.config is distributed as part of \f(CW$_PROGRAM\fR
 .SS "\s-1SEE ALSO\s0"
 .IX Subsection "SEE ALSO"
-$\fI_PROGRAM\fR\|(1)
+$\fB_PROGRAM\fR\|(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/doc/siege2csv.1.in new/siege-4.1.7/doc/siege2csv.1.in
--- old/siege-4.1.6/doc/siege2csv.1.in  2023-01-05 16:53:01.000000000 +0100
+++ new/siege-4.1.7/doc/siege2csv.1.in  2024-11-14 15:01:38.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -46,7 +46,7 @@
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
 ..
 .nr rF 0
 .if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{
-.    if \nF \{
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
 .        de IX
 .        tm Index:\\$1\t\\n%\t"\\$2"
 ..
-.        if !\nF==2 \{
+.        if !\nF==2 \{\
 .            nr % 0
 .            nr F 2
 .        \}
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BOMBARDMENT 1"
-.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "siege2csv"
+.TH BOMBARDMENT 1 "2024-11-14" "JoeDog" "siege2csv"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -167,7 +167,7 @@
     between requests.  The \f(CW$_PROGRAM\fR default is overridden by 
bombardment
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1)
+\&\fBsiege\fR\|(1), \fBsiege2csv\fR\|(1)
 .SH "AUTHOR"
 .IX Header "AUTHOR"
 Written by Peter Hutnick, et al.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/doc/siegerc.in new/siege-4.1.7/doc/siegerc.in
--- old/siege-4.1.6/doc/siegerc.in      2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/doc/siegerc.in      2024-11-14 14:57:23.000000000 +0100
@@ -521,6 +521,17 @@
 #
 # login-url = 
 
+# 
+# Auth URL. This feature is similar to the Login URL except it's invoked 
+# for form-based authentication after a 403 challenge. If the server responds
+# with 403 Forbidden, siege will attempt form based authentication with a
+# auth-url whose hostname matches the current hostname. You can set more than
+# one auth-url. Siege will attempt to select the appropriate one.
+#
+# ex: auth-url = https://www.joedog.org/lemme-in POST user=ted&pass=excellent
+#
+# auth-url = 
+
 #
 # FTP login - There are two ways to login to an ftp server with siege. You
 # can use this directive to set login credentials or you can set them in a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/include/config.h.in new/siege-4.1.7/include/config.h.in
--- old/siege-4.1.6/include/config.h.in 2023-01-05 16:53:00.000000000 +0100
+++ new/siege-4.1.7/include/config.h.in 2024-11-14 15:01:37.000000000 +0100
@@ -33,6 +33,9 @@
 /* Define to 1 if you have the `freehostent' function. */
 #undef HAVE_FREEHOSTENT
 
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
 /* Define to 1 if you have the `gethostbyname' function. */
 #undef HAVE_GETHOSTBYNAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/include/joedog/path.h new/siege-4.1.7/include/joedog/path.h
--- old/siege-4.1.6/include/joedog/path.h       2023-01-05 16:53:26.000000000 
+0100
+++ new/siege-4.1.7/include/joedog/path.h       2024-11-14 15:01:56.000000000 
+0100
@@ -23,10 +23,10 @@
 #ifndef  JOEDOG_PATH_H
 #define  JOEDOG_PATH_H
 
-#define SIEGE_HOME     "/opt/siege-4.1.6"
-#define URL_FILE       "/opt/siege-4.1.6/etc/urls.txt"
-#define CNF_FILE       "/opt/siege-4.1.6/etc/siegerc"
-#define LOG_FILE       "/opt/siege-4.1.6/var/log/siege.log"
+#define SIEGE_HOME     "/home/jeff"
+#define URL_FILE       "/home/jeff/etc/urls.txt"
+#define CNF_FILE       "/home/jeff/etc/siegerc"
+#define LOG_FILE       "/home/jeff/var/log/siege.log"
 #define PLATFORM       "pc-x86_64-linux-gnu"
 
 #endif/*JOEDOG_PATH_H*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/auth.c new/siege-4.1.7/src/auth.c
--- old/siege-4.1.6/src/auth.c  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/auth.c  2024-11-14 14:57:23.000000000 +0100
@@ -173,6 +173,14 @@
   return;
 }
 
+BOOLEAN 
+auth_has_credentials(AUTH this)
+{
+  size_t len = array_length(this->creds);
+  printf("LENGTH: %ld\n", len);
+  return TRUE;
+}
+
 void
 auth_display(AUTH this, SCHEME scheme)
 {
@@ -193,9 +201,9 @@
 auth_get_basic_header(AUTH this, SCHEME scheme)
 {
   if (scheme == PROXY) {
-    return this->proxy.encode;
+    return this->proxy.encode != NULL ? this->proxy.encode : "";
   } else {
-    return this->basic.encode;
+    return this->basic.encode != NULL ? this->basic.encode : "";
   }  
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/auth.h new/siege-4.1.7/src/auth.h
--- old/siege-4.1.6/src/auth.h  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/auth.h  2024-11-14 14:57:23.000000000 +0100
@@ -38,6 +38,7 @@
 AUTH    auth_destroy(AUTH this);
 void    auth_add(AUTH this, CREDS creds);
 void    auth_display(AUTH this, SCHEME scheme);
+BOOLEAN auth_has_credentials(AUTH this);
 char *  auth_get_basic_header(AUTH this, SCHEME scheme);
 BOOLEAN auth_set_basic_header(AUTH this, SCHEME scheme, char *realm);
 char *  auth_get_ntlm_header(AUTH this, SCHEME scheme);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/browser.c new/siege-4.1.7/src/browser.c
--- old/siege-4.1.6/src/browser.c       2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/browser.c       2024-11-14 14:57:23.000000000 +0100
@@ -112,7 +112,7 @@
 private void    __increment_failures();
 private int     __select_color(int code);
 private void    __display_result(BROWSER this, RESPONSE resp, URL U, unsigned 
long bytes, float etime);
-
+private void    __init_cookies(BROWSER this);
 
 #ifdef  SIGNAL_CLIENT_PLATFORM
 private void    __signal_handler(int sig);
@@ -250,6 +250,8 @@
   pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &this->state);
 #endif/*SIGNAL_CLIENT_PLATFORM*/
 
+  __init_cookies(this);
+
   if (my.login == TRUE) {
     URL tmp = new_url(array_next(my.lurl));
     url_set_ID(tmp, 0);
@@ -376,10 +378,12 @@
 void
 browser_set_cookies(BROWSER this, HASH cookies)
 {
-  int i = 0;
-
   this->cookies = cookies;
+}
 
+private void
+__init_cookies(BROWSER this) {
+  int i;
   if (this->cookies != NULL) {
     char **keys = hash_get_keys(this->cookies);
     for (i = 0; i < hash_get_entries(this->cookies); i ++){
@@ -420,6 +424,8 @@
 private BOOLEAN
 __http(BROWSER this, URL U)
 {
+  char     *url;
+  BOOLEAN  res;
   unsigned long bytes  = 0;
   int      code, okay, fail;
   float    etime;
@@ -678,10 +684,12 @@
           b = auth_set_ntlm_header (
             my.auth, HTTP, response_get_www_auth_challenge(resp), 
response_get_www_auth_realm(resp)
           );
+          if (b == FALSE) return b;
         }
         if (response_get_www_auth_type(resp) == BASIC) {
           this->auth.type.www =  BASIC;
-          auth_set_basic_header(my.auth, HTTP, 
response_get_www_auth_realm(resp));
+          b = auth_set_basic_header(my.auth, HTTP, 
response_get_www_auth_realm(resp));
+          if (b == FALSE) return b;
         }
         if ((__request(this, U)) == FALSE) {
           fprintf(stderr, "ERROR from http_request\n");
@@ -689,14 +697,30 @@
         }
       }
       break;
+    case 403:
+      res = FALSE;
+      while ((url = array_pop(my.aurl)) != NULL) {
+        URL tmp = new_url(url);
+        if (strmatch(url_get_hostname(U), url_get_hostname(tmp))) {
+          url_set_ID(tmp, 0);
+          res = __request(this, tmp);
+          if (res == TRUE) {
+            xfree(url);
+            res = __request(this, U);
+            return res;
+          }
+        }
+        xfree(url);
+      }
+      return res;
     case 407:
       /**
        * Proxy-Authenticate challenge from the proxy server.
        */
       this->auth.proxy = (this->auth.proxy==0) ? 1 : this->auth.proxy;
       if ((this->auth.bids.proxy++) < my.bids - 1) {
+        BOOLEAN b;
         if (response_get_proxy_auth_type(resp) == DIGEST) {
-          BOOLEAN b;
           this->auth.type.proxy =  DIGEST;
           b = auth_set_digest_header (
             my.auth, &(this->auth.pchlg), &(this->auth.pcred), &(this->rseed),
@@ -712,7 +736,8 @@
         }
         if (response_get_proxy_auth_type(resp) == BASIC) {
           this->auth.type.proxy = BASIC;
-          auth_set_basic_header(my.auth, PROXY, 
response_get_proxy_auth_realm(resp));
+          b = auth_set_basic_header(my.auth, PROXY, 
response_get_proxy_auth_realm(resp));
+          if (b == FALSE) return b;
         }
         if ((__request(this, U)) == FALSE)
           return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/cookie.c new/siege-4.1.7/src/cookie.c
--- old/siege-4.1.6/src/cookie.c        2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/cookie.c        2024-11-14 14:57:23.000000000 +0100
@@ -20,6 +20,7 @@
   char *    string;
   BOOLEAN   session;
   BOOLEAN   secure;
+  BOOLEAN   persistent;
 };
 
 size_t COOKIESIZE = sizeof(struct COOKIE_T);
@@ -32,6 +33,8 @@
   "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"
 };
 
+char *__cookie_none = "none";
+
 /**
  * Creates a cookie with the value of the
  * Set-cookie header. 
@@ -45,14 +48,15 @@
   COOKIE this;
 
   this = calloc(sizeof(struct COOKIE_T), 1);
-  this->name    = NULL;
-  this->value   = NULL;
-  this->domain  = NULL;
-  this->expires = 0;
-  this->expstr  = NULL;
-  this->string  = NULL;
-  this->session = TRUE;  
-  this->none    = strdup("none");
+  this->name       = NULL;
+  this->value      = NULL;
+  this->domain     = NULL;
+  this->expires    = 0;
+  this->expstr     = NULL;
+  this->string     = NULL;
+  this->session    = TRUE;  
+  this->persistent = FALSE;
+  this->none       = strdup(__cookie_none);
   if (__parse_input(this, str, host) == FALSE) {
     return cookie_destroy(this);
   }
@@ -120,6 +124,12 @@
   this->expires = expires;
 }
 
+void 
+cookie_set_persistent(COOKIE this, BOOLEAN persistent)
+{
+  this->persistent = persistent;
+}
+
 /**
  * Returns the name of the cookie
  * Example: Set-Cookie: exes=X; expires=Fri, 01-May-2015 12:51:25 GMT
@@ -128,8 +138,8 @@
 char *
 cookie_get_name(COOKIE this) 
 {
-  if (this == NULL && this->name == NULL) 
-    return this->none;
+  if (this == NULL || this->name == NULL) 
+    return __cookie_none;
   return this->name;
 }
 
@@ -141,8 +151,8 @@
 char * 
 cookie_get_value(COOKIE this) 
 {
-  if (this == NULL && this->value == NULL) 
-    return this->none;
+  if (this == NULL || this->value == NULL) 
+    return __cookie_none;
   return this->value;
 }
 
@@ -152,8 +162,8 @@
 char *
 cookie_get_domain(COOKIE this)
 {
-  if (this == NULL && this->domain == NULL) 
-    return this->none;
+  if (this == NULL || this->domain == NULL) 
+    return __cookie_none;
   return this->domain;
 }
 
@@ -163,8 +173,8 @@
 char * 
 cookie_get_path(COOKIE this)
 {
-  if (this == NULL && this->path == NULL)
-    return this->none;
+  if (this == NULL || this->path == NULL)
+    return __cookie_none;
   return this->path;
 }
 
@@ -184,6 +194,14 @@
   return this->session;
 }
 
+BOOLEAN
+cookie_get_persistent(COOKIE this)
+{
+  if (this == NULL) 
+    return TRUE;
+  return this->persistent;
+}
+
 /**
  * Returns the string value of the cookie
  * (Mainly a debugging tool; we want cookie_expires for anything useful)
@@ -195,9 +213,6 @@
 char *
 cookie_expires_string(COOKIE this)
 {
-  /*if (this->expstr == NULL) 
-    this->expstr = malloc(sizeof (char*) * 128);
-  else */
   this->expstr = realloc(this->expstr, sizeof(this->expstr)*128);
   memset(this->expstr, '\0', 128);
   struct tm * timeinfo;
@@ -217,9 +232,10 @@
   memset(this->string, '\0', len);
  
   snprintf(
-    this->string, len, "%s=%s; domain=%s; path=%s; expires=%lld",
+    this->string, len, "%s=%s; domain=%s; path=%s; expires=%lld%s",
     this->name, this->value, (this->domain != NULL) ? this->domain : "none", 
-    (this->path != NULL) ? this->path : "/", (long long)this->expires
+    (this->path != NULL) ? this->path : "/", (long long)this->expires,
+    (this->persistent == TRUE) ? "; persistent=true" : ""
   ); 
   return this->string;
 }
@@ -248,10 +264,10 @@
 COOKIE 
 cookie_clone(COOKIE this, COOKIE that) 
 {
-  this->value   = strealloc(this->value,  cookie_get_value(that)); 
-  this->domain  = strealloc(this->domain, cookie_get_domain(that));
-  this->path    = strealloc(this->path,   cookie_get_path(that));
-  //if ((time_t*)cookie_get_expires(that) != 0) {
+  this->value     = strealloc(this->value,  cookie_get_value(that)); 
+  this->domain    = strealloc(this->domain, cookie_get_domain(that));
+  this->path      = strealloc(this->path,   cookie_get_path(that));
+  this->persistent = cookie_get_persistent(that);
   if (this->expires > 0) {
     this->expires = time((time_t*)cookie_get_expires(that));
   }
@@ -322,6 +338,10 @@
       cookie_set_domain(this, val);
     } else if (!strncasecmp(key, "secure", 6)) {
       this->secure = TRUE;
+    } else if (!strncasecmp(key, "persistent", 10)) {
+      if (!strncasecmp(val, "true", 4)) {
+        this->persistent = TRUE;
+      }
     } else {
       this->name  = strdup(key);
       this->value = strdup(val);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/cookie.h new/siege-4.1.7/src/cookie.h
--- old/siege-4.1.6/src/cookie.h        2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/cookie.h        2024-11-14 14:57:23.000000000 +0100
@@ -38,12 +38,14 @@
 void    cookie_set_path(COOKIE this, char *str);
 void    cookie_set_domain(COOKIE this, char *str);
 void    cookie_set_expires(COOKIE this, time_t expires);
+void    cookie_set_persistent(COOKIE this, BOOLEAN persistent);
 char *  cookie_get_name(COOKIE this);
 char *  cookie_get_value(COOKIE this);
 char *  cookie_get_domain(COOKIE this);
 char *  cookie_get_path(COOKIE this);
 time_t  cookie_get_expires(COOKIE this);
 BOOLEAN cookie_get_session(COOKIE this);
+BOOLEAN cookie_get_persistent(COOKIE this);
 char *  cookie_expires_string(COOKIE this);
 char *  cookie_to_string(COOKIE this);
 COOKIE  cookie_clone(COOKIE this, COOKIE that);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/cookies.c new/siege-4.1.7/src/cookies.c
--- old/siege-4.1.6/src/cookies.c       2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/cookies.c       2024-11-14 14:57:23.000000000 +0100
@@ -67,8 +67,6 @@
 cookies_add(COOKIES this, char *str, char *host)
 {
   size_t  id    = pthread_self();
-  //int     hlen  = 0;
-  //int     dlen  = 0;
   NODE   *cur   = NULL; 
   NODE   *pre   = NULL; 
   NODE   *new   = NULL;
@@ -80,8 +78,6 @@
   for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) {
     const char *domainptr = cookie_get_domain(cur->cookie);
     if (*domainptr == '.') ++domainptr;
-    //hlen = host      ? strlen(host)      : 0;
-    //dlen = domainptr ? strlen(domainptr) : 0;
     if (__endswith(host, domainptr)){
       valid = TRUE;
     }
@@ -92,17 +88,26 @@
       found = TRUE;
       break;
     }
+    if (my.get && valid && !strcasecmp(cookie_get_name(cur->cookie), 
cookie_get_name(oreo))) {
+      cookie_reset_value(cur->cookie, cookie_get_value(oreo));
+      oreo  = cookie_destroy(oreo);
+      found = TRUE;
+      break;
+    }
   }   
 
   if (!found) {
+    if (my.get && strlen(host) > 1) {
+      cookie_set_persistent(oreo, TRUE);
+    }
     new = (NODE*)malloc(sizeof(NODE));
-    new->threadID = id;
+    new->threadID = (cookie_get_persistent(oreo) == TRUE) ? 999999999999999 : 
id;
     new->cookie   = oreo;
     new->next     = cur;
     if (cur == this->head)
       this->head = new;
     else
-      pre->next  = new;
+      if (pre != NULL) pre->next  = new;
   }
 
   return TRUE;
@@ -142,7 +147,7 @@
   NODE     *cur;
   NODE     *pre;
   pthread_t id  = pthread_self();
-
+  puts("DELETE ALL");
   // XXX: delete cookies by thread; not every cookie in the list
   for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) {
     if (cur->threadID == id) {
@@ -172,7 +177,6 @@
   size_t id = pthread_self();
 
   memset(oreo, '\0', sizeof oreo);
-
   tmp = time(NULL);
   gmtime_r(&tmp, &tm);
   tm.tm_isdst = -1; // force mktime to figure it out!
@@ -219,8 +223,9 @@
     if (tmp == NULL) 
       ; 
     else printf(
-      "%lld: NAME: %s\n   VALUE: %s\n   Expires: %s\n",
-      (long long)cur->threadID, cookie_get_name(tmp), cookie_get_value(tmp), 
cookie_expires_string(tmp)
+      "%lld: NAME: %s\n   VALUE: %s\n   Expires: %s  Persistent: %s\n",
+      (long long)cur->threadID, cookie_get_name(tmp), cookie_get_value(tmp), 
cookie_expires_string(tmp),
+      (cookie_get_persistent(tmp)==TRUE) ? "true" : "false"
     );
   }
 }
@@ -291,28 +296,38 @@
     chomp(line);
     if (strlen(line) > 1) {
       int   num = 2;
+      char  *key;
+      char  *val;
       char  **pair; 
       pair = split('|', line, &num);
       trim(pair[0]);
       trim(pair[1]);
-      if (pair[0] != NULL && pair[1] != NULL) {
-        if (hash_get(IDX, pair[0]) == NULL) {
+      if (strstr(pair[1], "persistent=true") != NULL) {
+        key = xstrdup("999999999999999");
+      } else {
+        key = xstrdup(pair[0]);
+      }
+      val = xstrdup(pair[1]);
+      if (key != NULL && val != NULL) {
+        if (hash_get(IDX, key) == NULL) {
           char tmp[1024];
           n += 1;
           memset(tmp, '\0', 1024);
           snprintf(tmp, 1024, "%d", n);
-          hash_add(IDX, pair[0], tmp);
+          hash_add(IDX, key, tmp);
         }
-        HASH tmp = (HASH)hash_get(HOH, hash_get(IDX, pair[0]));
+        HASH tmp = (HASH)hash_get(HOH, hash_get(IDX, key));
         if (tmp == NULL) {
           tmp = new_hash();
-          hash_add(tmp, pair[1], pair[1]);
-          hash_nadd(HOH, hash_get(IDX, pair[0]), tmp, HASHSIZE);
+          hash_add(tmp, val, val);
+          hash_nadd(HOH, hash_get(IDX, key), tmp, HASHSIZE);
         } else {
-          hash_add(tmp, pair[1], pair[1]);
+          hash_add(tmp, val, val);
         }
       } 
       split_free(pair, num); 
+      xfree(key);
+      xfree(val);
     }
     memset(line, '\0', len);
   } 
@@ -356,7 +371,12 @@
     if (tmp != NULL && cookie_get_session(tmp) != TRUE && 
cookie_get_expires(cur->cookie) >= now) {
       memset(line, '\0', len);
       if (cookie_to_string(tmp) != NULL) {
-        snprintf(line, len, "%ld | %s\n", cur->threadID, 
cookie_to_string(tmp));
+        snprintf(
+          line, len, 
+          "%ld | %s\n", 
+          (my.get || cookie_get_persistent(tmp)) ? 999999999999999 : 
cur->threadID, 
+          cookie_to_string(tmp)
+        );
       }
       fputs(line, fp); 
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/init.c new/siege-4.1.7/src/init.c
--- old/siege-4.1.6/src/init.c  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/init.c  2024-11-14 14:57:23.000000000 +0100
@@ -39,6 +39,9 @@
 #include <unistd.h>
 #include <errno.h>
 #include <stdlib.h>
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || 
defined(__DragonFly__)
+#include <signal.h>
+#endif
 
 #define LINESZ 1024
 
@@ -129,6 +132,7 @@
   my.ssl_key        = NULL;
   my.ssl_ciphers    = NULL; 
   my.lurl           = new_array();
+  my.aurl           = new_array();
   my.cookies        = new_cookies();
   my.nomap          = xcalloc(1, sizeof(LINES));
   my.nomap->index   = 0;
@@ -253,6 +257,7 @@
   xfree(method);
   my.auth    = auth_destroy(my.auth);
   my.lurl    = array_destroy(my.lurl);
+  my.aurl    = array_destroy(my.aurl);
   my.cookies = cookies_destroy(my.cookies); 
 
   if (EXIT) exit(0);
@@ -537,7 +542,6 @@
         xstrncpy(my.encoding, value, sizeof(my.encoding));
       }
     }
-    #if 1
     else if (!strncasecmp(option, "login", 5)) {
       if(strmatch(option, "login-url")){  
         my.login = TRUE;
@@ -547,7 +551,9 @@
         auth_add(my.auth, new_creds(HTTP, value));
       }
     }
-    #endif 
+    else if(strmatch(option, "auth-url")){  
+      array_push(my.aurl, value);
+    }
     else if (strmatch(option, "attempts")) {
       if (value != NULL) {
         my.bids = atoi(value);
@@ -610,7 +616,8 @@
     }
     else if (strmatch(option, "header")) {
       if (!strchr(value,':')) NOTIFY(FATAL, "no ':' in http-header");
-      if ((strlen(value) + strlen(my.extra) + 3) > 512) NOTIFY(FATAL, "too 
many headers");
+      if ((strlen(value) + strlen(my.extra) + 3) > sizeof(my.extra) / 2) // 
leave half of the header space to be used internally
+          NOTIFY(FATAL, "too many headers");
       strcat(my.extra,value);
       strcat(my.extra,"\015\012");
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/main.c new/siege-4.1.7/src/main.c
--- old/siege-4.1.6/src/main.c  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/main.c  2024-11-14 14:57:23.000000000 +0100
@@ -293,7 +293,7 @@
       case 'H':
         {
           if(!strchr(optarg,':')) NOTIFY(FATAL, "no ':' in http-header");
-          if((strlen(optarg) + strlen(my.extra) + 3) > 2048)
+          if((strlen(optarg) + strlen(my.extra) + 3) > sizeof(my.extra))  // 
sizeof(*my.extra) == 1, so this is accurate
               NOTIFY(FATAL, "header is too large");
           strcat(my.extra,optarg);
           strcat(my.extra,"\015\012");
@@ -531,24 +531,24 @@
       fprintf(stderr, "%s aborted due to excessive socket failure; you\n", 
program_name);
       fprintf(stderr, "can change the failure threshold in $HOME/.%src\n", 
program_name);
     }
-    fprintf(stderr, "\nTransactions:\t\t%12u hits\n",        
data_get_count(data));
+    fprintf(stderr, "\nTransactions:\t\t%9u    hits\n",        
data_get_count(data));
     fprintf(stderr, "Availability:\t\t%12.2f %%\n",          
data_get_count(data)==0 ? 0 :
                                                              
(double)data_get_count(data) /
                                                              
(data_get_count(data)+my.failed)*100
     );
     fprintf(stderr, "Elapsed time:\t\t%12.2f secs\n",        
data_get_elapsed(data));
     fprintf(stderr, "Data transferred:\t%12.2f MB\n",        
data_get_megabytes(data)); /*%12llu*/
-    fprintf(stderr, "Response time:\t\t%12.2f secs\n",       
data_get_response_time(data));
+    fprintf(stderr, "Response time:\t\t%12.2f ms\n",       1000.0f * 
data_get_response_time(data));
     fprintf(stderr, "Transaction rate:\t%12.2f trans/sec\n", 
data_get_transaction_rate(data));
     fprintf(stderr, "Throughput:\t\t%12.2f MB/sec\n",        
data_get_throughput(data));
     fprintf(stderr, "Concurrency:\t\t%12.2f\n",              
data_get_concurrency(data));
-    fprintf(stderr, "Successful transactions:%12u\n",        
data_get_code(data)); 
+    fprintf(stderr, "Successful transactions:%9u\n",        
data_get_code(data));
     if (my.debug) {
-      fprintf(stderr, "HTTP OK received:\t%12u\n",             
data_get_okay(data));
+      fprintf(stderr, "HTTP OK received:\t%9u\n",             
data_get_okay(data));
     }
-    fprintf(stderr, "Failed transactions:\t%12u\n",          my.failed);
-    fprintf(stderr, "Longest transaction:\t%12.2f\n",        
data_get_highest(data));
-    fprintf(stderr, "Shortest transaction:\t%12.2f\n",       
data_get_lowest(data));
+    fprintf(stderr, "Failed transactions:\t%9u\n",          my.failed);
+    fprintf(stderr, "Longest transaction:\t%12.2f ms\n",        1000.0f * 
data_get_highest(data));
+    fprintf(stderr, "Shortest transaction:\t%12.2f ms\n",       1000.0f * 
data_get_lowest(data));
     fprintf(stderr, " \n");
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/page.c new/siege-4.1.7/src/page.c
--- old/siege-4.1.6/src/page.c  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/page.c  2024-11-14 14:57:23.000000000 +0100
@@ -36,6 +36,7 @@
     this->size = 0;
     free(this->buf);
     free(this);
+    this = NULL;
   }
   return this;
 }  
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/setup.h new/siege-4.1.7/src/setup.h
--- old/siege-4.1.6/src/setup.h 2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/setup.h 2024-11-14 14:57:23.000000000 +0100
@@ -191,7 +191,7 @@
   AUTH auth;
   BOOLEAN keepalive;     /* boolean, connection keep-alive value    */
   int     signaled;      /* timed based testing notification bool.  */
-  char    extra[2048];   /* extra http request headers              */ 
+  char    extra[8192];   /* extra http request headers              */ 
   #if 0
   struct {
     BOOLEAN required;    /* boolean, TRUE == use a proxy server.    */
@@ -203,6 +203,7 @@
   BOOLEAN login;         /* boolean, client must login first.       */
   char    *loginurl;     /* XXX: deprecated the initial login URL   */
   ARRAY   lurl;
+  ARRAY   aurl; 
   int     failures;      /* number of failed attempts before abort. */
   int     failed;        /* total number of socket failures.        */
   BOOLEAN escape;        /* boolean, TRUE == url-escaping           */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/sock.c new/siege-4.1.7/src/sock.c
--- old/siege-4.1.6/src/sock.c  2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/sock.c  2024-11-14 14:57:23.000000000 +0100
@@ -94,7 +94,7 @@
   char   hn[512];
   int    port;
   int    domain;
-#if defined(__GLIBC__)
+#if defined(HAVE_GETADDRINFO)
   char port_str[10];
   struct addrinfo hints;
   struct addrinfo *addr_res;
@@ -143,7 +143,7 @@
     return -1;
   }
 
-#if defined(__GLIBC__)
+#if defined(HAVE_GETADDRINFO)
   {
     snprintf(port_str, sizeof(port_str), "%d", port);
 
@@ -182,13 +182,13 @@
   herrno = h_errno;
 #else
   /**
-   * Let's just hope gethostbyname is tread-safe
+   * Let's just hope gethostbyname is thread-safe
    */
   hp = gethostbyname(hn);
   herrno = h_errno;
 #endif/*OS SPECIFICS*/ 
 
-#if !defined(__GLIBC__)
+#if !defined(HAVE_GETADDRINFO)
   /* gethostbyname only offers IPv4 support */
   domain = AF_INET;
 
@@ -219,7 +219,7 @@
 
   s_addr = (struct sockaddr *)&cli;
   addrlen = sizeof(struct sockaddr_in);
-#endif /* end of __GLIBC__ not defined */
+#endif /* end of HAVE_GETADDRINFO not defined */
 
   /* create a socket, return -1 on failure */
   if (__socket_create(C, domain) < 0) {
@@ -233,7 +233,7 @@
    */ 
   conn = connect(C->sock, s_addr, addrlen);
   pthread_testcancel();
-#if defined(__GLIBC__)
+#if defined(HAVE_GETADDRINFO)
   /**
     * The result of getaddrinfo is a linked list. Attempt
     * to connect to each result until successful
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/url.c new/siege-4.1.7/src/url.c
--- old/siege-4.1.6/src/url.c   2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/url.c   2024-11-14 14:57:23.000000000 +0100
@@ -661,9 +661,36 @@
 private void
 __parse_post_data(URL this, char *datap)
 {
+  char *ctype;
+  char *end_ctype;
+
+    // check content type
+  ctype = strstr(datap,"-T");
+  if (!empty(my.conttype)) {
+    this->conttype = xstrdup(my.conttype);
+  }else{
+    this->conttype = xstrdup("application/x-www-form-urlencoded");
+  }
+  
+  //if -T arg passed in line retrieve content type
+  if (ctype != NULL) {
+    // get end of content type defined by ; delimeter and separate strings 
with null terminator
+    // url file line should be constructed like this: http://url -T 
application/json; {data}
+    end_ctype = strstr(datap, ";");
+    *end_ctype = '\0';
+    // ctype moves to beginning of content type definition
+    ctype += 3;
+    // set conttype
+    this->conttype = xstrdup(ctype);
+    // move datap to char after null terminator
+    datap = end_ctype + 1;
+  }
+
   for (; isspace((unsigned int)*datap); datap++) {
     /* Advance past white space */
   }
+
+
   if (*datap == '<') {
     datap++;
     load_file(this, datap);
@@ -673,11 +700,6 @@
   } else {
     this->postdata = xstrdup(datap);
     this->postlen  = strlen(this->postdata);
-    if (! empty(my.conttype)) {
-      this->conttype = xstrdup(my.conttype);
-    } else {
-      this->conttype = xstrdup("application/x-www-form-urlencoded");
-    }
     return;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/siege-4.1.6/src/version.c new/siege-4.1.7/src/version.c
--- old/siege-4.1.6/src/version.c       2023-01-05 16:52:49.000000000 +0100
+++ new/siege-4.1.7/src/version.c       2024-11-14 14:57:48.000000000 +0100
@@ -4,12 +4,12 @@
  * used by configure to dynamically assign those values 
  * to documentation files.
  */
-const char *version_string = "4.1.6";
+const char *version_string = "4.1.7";
 const char *program_name   = "siege";
 const char *author_name    = "Jeffrey Fulmer, et al.";
 const char *email_address  = "j...@joedog.org";
-const char *years          = "1999-2023";
-const char *copyright      = "Copyright (C) 2023 by Jeffrey Fulmer, et al.\n\
+const char *years          = "1999-2024";
+const char *copyright      = "Copyright (C) 2024 by Jeffrey Fulmer, et al.\n\
 This is free software; see the source for copying conditions.\n\
 There is NO warranty; not even for MERCHANTABILITY or FITNESS\n\
 FOR A PARTICULAR PURPOSE.\n";

++++++ siege-gcc15.patch ++++++
diff -upr siege-4.1.7.orig/src/crew.c siege-4.1.7/src/crew.c
--- siege-4.1.7.orig/src/crew.c 2025-07-08 09:49:10.798475362 +0000
+++ siege-4.1.7/src/crew.c      2025-07-08 09:57:07.179600520 +0000
@@ -147,7 +147,7 @@ private void
 }
 
 BOOLEAN
-crew_add(CREW crew, void (*routine)(), void *arg)
+crew_add(CREW crew, void (*routine)(void *), void *arg)
 {
   int c;
   WORK *workptr;
diff -upr siege-4.1.7.orig/src/crew.h siege-4.1.7/src/crew.h
--- siege-4.1.7.orig/src/crew.h 2025-07-08 09:49:10.797947904 +0000
+++ siege-4.1.7/src/crew.h      2025-07-08 09:58:32.764227730 +0000
@@ -28,7 +28,7 @@
 
 typedef struct work
 {
-  void          (*routine)();
+  void          (*routine)(void *);
   void          *arg;
   struct work   *next;
 } WORK;
@@ -36,7 +36,7 @@ typedef struct work
 typedef struct CREW_T *CREW;
 
 CREW    new_crew(int size, int maxsize, BOOLEAN block);
-BOOLEAN crew_add(CREW this, void (*routine)(), void *arg); 
+BOOLEAN crew_add(CREW this, void (*routine)(void *), void *arg); 
 BOOLEAN crew_cancel(CREW this);
 BOOLEAN crew_join(CREW this, BOOLEAN finish, void **payload);
 void    crew_destroy(CREW this);
diff -upr siege-4.1.7.orig/src/date.h siege-4.1.7/src/date.h
--- siege-4.1.7.orig/src/date.h 2025-07-08 09:49:10.797744846 +0000
+++ siege-4.1.7/src/date.h      2025-07-08 09:55:32.894259646 +0000
@@ -34,7 +34,7 @@ extern  size_t DATESIZE;
  * because then we have one destroyer
  * that we can pass to the HASH
  */
-DATE   new_date();
+DATE   new_date(char *date);
 DATE   new_etag(char *etag);
 
 DATE    date_destroy(DATE this);
diff -upr siege-4.1.7.orig/src/handler.h siege-4.1.7/src/handler.h
--- siege-4.1.7.orig/src/handler.h      2025-07-08 09:49:10.798750599 +0000
+++ siege-4.1.7/src/handler.h   2025-07-08 09:58:59.491423601 +0000
@@ -26,7 +26,7 @@
 #include <signal.h>
 #include <crew.h>
 
-void spin_doctor();
+void spin_doctor(CREW crew);
 void sig_handler(CREW crew); 
 
 #endif/*HANDLER_H*/
diff -upr siege-4.1.7.orig/src/page.h siege-4.1.7/src/page.h
--- siege-4.1.7.orig/src/page.h 2025-07-08 09:49:10.798683939 +0000
+++ siege-4.1.7/src/page.h      2025-07-08 09:56:06.940110550 +0000
@@ -7,7 +7,7 @@
  */
 typedef struct PAGE_T *PAGE;
 
-PAGE   new_page();
+PAGE   new_page(char *str);
 PAGE   page_destroy(PAGE this);
 void   page_concat(PAGE this, const char *str, const int len);
 void   page_clear(PAGE this);
diff -upr siege-4.1.7.orig/src/setup.h siege-4.1.7/src/setup.h
--- siege-4.1.7.orig/src/setup.h        2025-07-08 09:49:10.796492272 +0000
+++ siege-4.1.7/src/setup.h     2025-07-08 09:53:58.006460026 +0000
@@ -96,16 +96,16 @@ char *strchr (), *strrchr ();
 
 
 #ifndef HAVE_STRCASECMP
-int strcasecmp();
+int strcasecmp(const char *, const char *);
 #endif
 #ifndef HAVE_STRNCASECMP
-int strncasecmp();
+int strncasecmp(const char s1[], const char s2[], size_t n);
 #endif
 #ifndef HAVE_STRNCMP
-int strncmp();
+int strncmp(const);
 #endif
 #ifndef HAVE_STRLEN
-int strlen();
+int strlen(const char s1[], const char s2[], size_t n);
 #endif
 
 #include <url.h>

Reply via email to