Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-Starman for openSUSE:Factory checked in at 2022-09-27 20:14:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Starman (Old) and /work/SRC/openSUSE:Factory/.perl-Starman.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Starman" Tue Sep 27 20:14:40 2022 rev:3 rq:1006445 version:0.4016 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Starman/perl-Starman.changes 2019-05-24 11:32:46.145380917 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Starman.new.2275/perl-Starman.changes 2022-09-27 20:14:53.389952980 +0200 @@ -1,0 +2,9 @@ +Wed Sep 14 03:08:43 UTC 2022 - Tina M??ller <timueller+p...@suse.de> + +- updated to 0.4016 + see /usr/share/doc/packages/perl-Starman/Changes + + 0.4016 2022-09-13 10:11:34 PDT + - Add psgix.informational callback #146 + +------------------------------------------------------------------- Old: ---- Starman-0.4015.tar.gz New: ---- Starman-0.4016.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Starman.spec ++++++ --- /var/tmp/diff_new_pack.vpakjd/_old 2022-09-27 20:14:53.785953842 +0200 +++ /var/tmp/diff_new_pack.vpakjd/_new 2022-09-27 20:14:53.789953851 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Starman # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,18 +16,16 @@ # +%define cpan_name Starman Name: perl-Starman -Version: 0.4015 +Version: 0.4016 Release: 0 -%define cpan_name Starman -Summary: High-performance preforking PSGI/Plack web server License: Artistic-1.0 OR GPL-1.0-or-later -Group: Development/Libraries/Perl -Url: https://metacpan.org/release/%{cpan_name} +Summary: High-performance preforking PSGI/Plack web server +URL: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml BuildArch: noarch -BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros BuildRequires: perl(Data::Dump) @@ -98,8 +96,8 @@ This server does not support Win32. %prep -%setup -q -n %{cpan_name}-%{version} -find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644 +%autosetup -n %{cpan_name}-%{version} +find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -name "configure" -print0 | xargs -0 chmod 644 %build perl Build.PL --installdirs=vendor @@ -113,8 +111,7 @@ %perl_gen_filelist %files -f %{name}.files -%defattr(-,root,root,755) -%doc Changes README script +%doc Changes README %license LICENSE %changelog ++++++ Starman-0.4015.tar.gz -> Starman-0.4016.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/Changes new/Starman-0.4016/Changes --- old/Starman-0.4015/Changes 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/Changes 2022-09-13 19:11:36.000000000 +0200 @@ -1,5 +1,8 @@ Revision history for Perl extension Starman +0.4016 2022-09-13 10:11:34 PDT + - Add psgix.informational callback #146 + 0.4015 2019-05-20 18:43:46 PDT - Fixed a bug incorrectly handling content body of '0' (olsonanl) #133 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/LICENSE new/Starman-0.4016/LICENSE --- old/Starman-0.4015/LICENSE 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/LICENSE 2022-09-13 19:11:36.000000000 +0200 @@ -292,21 +292,21 @@ - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through - textual modification. + textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright - Holder. + Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for - the package. + the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the - computing community at large as a market that must bear the fee.) + computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they - received it. + received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you @@ -373,7 +373,7 @@ 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/MANIFEST new/Starman-0.4016/MANIFEST --- old/Starman-0.4015/MANIFEST 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/MANIFEST 2022-09-13 19:11:36.000000000 +0200 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.025. Build.PL Changes LICENSE @@ -18,6 +18,8 @@ t/chunked_req.t t/chunked_termination.t t/chunked_zero_length.t +t/early-hints.t +t/expect.t t/findbin.psgi t/harakiri.t t/lf_only_request.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/META.json new/Starman-0.4016/META.json --- old/Starman-0.4015/META.json 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/META.json 2022-09-13 19:11:36.000000000 +0200 @@ -4,7 +4,7 @@ "Tatsuhiko Miyagawa <miyag...@bulknews.net>" ], "dynamic_config" : 0, - "generated_by" : "Dist::Milla version v1.0.20, Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.143240", + "generated_by" : "Dist::Milla version v1.0.21, Dist::Zilla version 6.025, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], @@ -34,7 +34,8 @@ }, "develop" : { "requires" : { - "Dist::Milla" : "v1.0.20", + "Dist::Milla" : "v1.0.21", + "LWP::Protocol::https" : "0", "Test::Pod" : "1.41" } }, @@ -51,7 +52,7 @@ "perl" : "5.008001" }, "suggests" : { - "Net::Server::SS::Prefork" : "0", + "Net::Server::SS::PreFork" : "0", "Server::Starter" : "0" } }, @@ -75,7 +76,7 @@ "web" : "https://github.com/miyagawa/Starman" } }, - "version" : "0.4015", + "version" : "0.4016", "x_contributors" : [ "Adam Guthrie <adam.guth...@dvlgames.com>", "Alex Vandiver <a...@chmrr.net>", @@ -98,14 +99,18 @@ "Perlover <perlo...@perlover.com>", "Peter Makholm <pe...@makholm.net>", "Piotr Roszatycki <piotr.roszaty...@gmail.com>", + "podoleanuciprian <52755740+podoleanucipr...@users.noreply.github.com>", "Robert Olson <ol...@mcs.anl.gov>", + "Robert Rothenberg <r...@cpan.org>", "Robert Sedlacek <r.sedla...@shadowcat.co.uk>", "Slobodan Mi\u0161kovi\u0107 <slobo...@miskovic.ca>", "spleenjack <spleenj...@gmail.com>", + "Tatsuhiko Miyagawa <tmiyag...@fastly.com>", "Tim Bunce <tim.bu...@pobox.com>" ], - "x_generated_by_perl" : "v5.20.1", - "x_serialization_backend" : "Cpanel::JSON::XS version 4.09", + "x_generated_by_perl" : "v5.34.1", + "x_serialization_backend" : "Cpanel::JSON::XS version 4.27", + "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later", "x_static_install" : 1 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/META.yml new/Starman-0.4016/META.yml --- old/Starman-0.4015/META.yml 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/META.yml 2022-09-13 19:11:36.000000000 +0200 @@ -9,7 +9,7 @@ configure_requires: Module::Build::Tiny: '0.034' dynamic_config: 0 -generated_by: 'Dist::Milla version v1.0.20, Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.143240' +generated_by: 'Dist::Milla version v1.0.21, Dist::Zilla version 6.025, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -37,7 +37,7 @@ bugtracker: https://github.com/miyagawa/Starman/issues homepage: https://github.com/miyagawa/Starman repository: https://github.com/miyagawa/Starman.git -version: '0.4015' +version: '0.4016' x_contributors: - 'Adam Guthrie <adam.guth...@dvlgames.com>' - 'Alex Vandiver <a...@chmrr.net>' @@ -60,11 +60,15 @@ - 'Perlover <perlo...@perlover.com>' - 'Peter Makholm <pe...@makholm.net>' - 'Piotr Roszatycki <piotr.roszaty...@gmail.com>' + - 'podoleanuciprian <52755740+podoleanucipr...@users.noreply.github.com>' - 'Robert Olson <ol...@mcs.anl.gov>' + - 'Robert Rothenberg <r...@cpan.org>' - 'Robert Sedlacek <r.sedla...@shadowcat.co.uk>' - 'Slobodan Mi??kovi?? <slobo...@miskovic.ca>' - 'spleenjack <spleenj...@gmail.com>' + - 'Tatsuhiko Miyagawa <tmiyag...@fastly.com>' - 'Tim Bunce <tim.bu...@pobox.com>' -x_generated_by_perl: v5.20.1 +x_generated_by_perl: v5.34.1 x_serialization_backend: 'YAML::Tiny version 1.73' +x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' x_static_install: 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/README new/Starman-0.4016/README --- old/Starman-0.4015/README 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/README 2022-09-13 19:11:36.000000000 +0200 @@ -96,6 +96,28 @@ Starman workers behind the frontend servers such as nginx, and use HTTP proxy with TCP or UNIX sockets. +PSGI EXTENSIONS + + psgix.informational + + Starman exposes a callback named psgix.informational that can be used + for sending an informational response. The callback accepts two + arguments, the first argument being the status code and the second + being an arrayref of the headers to be sent. Example below sends an 103 + Early Hints response before processing the request to build a final + response. + + sub { + my $env = shift; + + $env->{'psgix.informational'}->( 103, [ + "Link" => "</style.css>; rel=preload" + ] ); + + my $rest = ... + $resp; + } + AUTHOR Tatsuhiko Miyagawa <miyag...@bulknews.net> @@ -106,6 +128,8 @@ Kazuho Oku wrote Net::Server::SS::PreFork that makes it easy to add Server::Starter support to this software. + The psgix.informational callback comes from Starlet by Kazuho Oku. + COPYRIGHT Tatsuhiko Miyagawa, 2010- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/cpanfile new/Starman-0.4016/cpanfile --- old/Starman-0.4015/cpanfile 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/cpanfile 2022-09-13 19:11:36.000000000 +0200 @@ -9,10 +9,14 @@ requires 'perl', '5.008001'; suggests 'Server::Starter'; -suggests 'Net::Server::SS::Prefork'; +suggests 'Net::Server::SS::PreFork'; on test => sub { requires 'Test::More'; requires 'Test::Requires'; requires 'LWP::UserAgent'; }; + +on develop => sub { + requires 'LWP::Protocol::https'; +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/lib/Starman/Server.pm new/Starman-0.4016/lib/Starman/Server.pm --- old/Starman-0.4015/lib/Starman/Server.pm 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/lib/Starman/Server.pm 2022-09-13 19:11:36.000000000 +0200 @@ -77,7 +77,7 @@ my($h, $p, $opt) = split /:/, $listen, 3; $listen{host} = $h if $h; $listen{port} = $p; - $listen{proto} = 'ssl' if 'ssl' eq lc $opt; + $listen{proto} = 'ssl' if defined $opt && lc $opt eq 'ssl'; } else { %listen = ( host => 'localhost', @@ -234,6 +234,7 @@ 'psgix.io' => $conn, 'psgix.input.buffered' => Plack::Util::TRUE, 'psgix.harakiri' => Plack::Util::TRUE, + 'psgix.informational' => sub { _write_informational($conn, @_) }, }; # Parse headers @@ -579,6 +580,20 @@ } } +sub _write_informational { + my ($conn, $code, $headers) = @_; + my $message = HTTP::Status::status_message($code); + my @lines = "HTTP/1.1 $code $message"; + for (my $i = 0; $i < @$headers; $i += 2) { + my $k = $headers->[$i]; + my $v = $headers->[$i + 1]; + push @lines, "$k: $v" ; + } + _syswrite($conn, \join($CRLF, @lines, $CRLF)); + + DEBUG && warn "[$$] Sent $code $message response\n"; +} + sub post_client_connection_hook { my $self = shift; if ($self->{client}->{harakiri}) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/lib/Starman.pm new/Starman-0.4016/lib/Starman.pm --- old/Starman-0.4015/lib/Starman.pm 2019-05-21 03:43:51.000000000 +0200 +++ new/Starman-0.4016/lib/Starman.pm 2022-09-13 19:11:36.000000000 +0200 @@ -2,7 +2,7 @@ use strict; use 5.008_001; -our $VERSION = '0.4015'; +our $VERSION = '0.4016'; 1; __END__ @@ -111,6 +111,28 @@ put Starman workers behind the frontend servers such as nginx, and use HTTP proxy with TCP or UNIX sockets. +=head1 PSGI EXTENSIONS + +=head2 psgix.informational + +Starman exposes a callback named C<psgix.informational> that can be +used for sending an informational response. The callback accepts two +arguments, the first argument being the status code and the second +being an arrayref of the headers to be sent. Example below sends an +103 Early Hints response before processing the request to build a +final response. + + sub { + my $env = shift; + + $env->{'psgix.informational'}->( 103, [ + "Link" => "</style.css>; rel=preload" + ] ); + + my $rest = ... + $resp; + } + =head1 AUTHOR Tatsuhiko Miyagawa E<lt>miyag...@bulknews.nete<gt> @@ -121,6 +143,7 @@ Kazuho Oku wrote L<Net::Server::SS::PreFork> that makes it easy to add L<Server::Starter> support to this software. +The C<psgix.informational> callback comes from L<Starlet> by Kazuho Oku. =head1 COPYRIGHT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/t/early-hints.t new/Starman-0.4016/t/early-hints.t --- old/Starman-0.4015/t/early-hints.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Starman-0.4016/t/early-hints.t 2022-09-13 19:11:36.000000000 +0200 @@ -0,0 +1,55 @@ +use strict; +use Test::TCP; +use IO::Socket::INET qw/ SHUT_WR /; +use HTTP::Request; +use HTTP::Response; +use Plack::Loader; +use Test::More; + +$ENV{PLACK_SERVER} = 'Starman'; + +test_tcp( + client => sub { + my $port = shift; + + my $socket = IO::Socket::INET->new( + PeerAddr => 'localhost', + PeerPort => $port, + Proto => 'tcp' + ) or die "Failed to connect to server: $!"; + + my $req_string = join("\r\n", "GET / HTTP/1.1", "Host: localhost", "", ""); + + $socket->send($req_string); + $socket->shutdown(SHUT_WR); + + my $data = ""; + while ($socket->connected) { + my $buf; + $socket->recv($buf, 1024); + $data .= $buf; + } + + my @lines = split /\r\n/, $data; + + is $lines[0], "HTTP/1.1 103 Early Hints"; + is $lines[1], "Link: </style.css>; rel=preload"; + is $lines[2], ""; + is $lines[3], "HTTP/1.1 200 OK"; + + }, + server => sub { + my $port = shift; + my $server = Plack::Loader->auto(port => $port, host => '127.0.0.1'); + + $server->run(sub { + my $env = shift; + $env->{'psgix.informational'}->( 103, [ + "Link" => "</style.css>; rel=preload" + ] ); + return [ 200, [ 'Content-Type', 'text/plain' ], ["ok"] ] + }); + } +); + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Starman-0.4015/t/expect.t new/Starman-0.4016/t/expect.t --- old/Starman-0.4015/t/expect.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Starman-0.4016/t/expect.t 2022-09-13 19:11:36.000000000 +0200 @@ -0,0 +1,48 @@ +use strict; +use Test::TCP; +use IO::Socket::INET qw/ SHUT_WR /; +use HTTP::Request; +use HTTP::Response; +use Plack::Loader; +use Test::More; + +$ENV{PLACK_SERVER} = 'Starman'; + +test_tcp( + client => sub { + my $port = shift; + + my $socket = IO::Socket::INET->new( + PeerAddr => 'localhost', + PeerPort => $port, + Proto => 'tcp' + ) or die "Failed to connect to server: $!"; + + my $req_string = join("\r\n", "POST / HTTP/1.1", "Host: localhost", "Expect: 100-CONTINUE", "Content-Length: 0", "", ""); + + $socket->send($req_string); + $socket->shutdown(SHUT_WR); + + my $data = ""; + while ($socket->connected) { + my $buf; + $socket->recv($buf, 1024); + $data .= $buf; + } + + my @lines = split /\r\n/, $data; + + is $lines[0], "HTTP/1.1 100 Continue"; + is $lines[1], ""; + is $lines[2], "HTTP/1.1 200 OK"; + + }, + server => sub { + my $port = shift; + my $server = Plack::Loader->auto(port => $port, host => '127.0.0.1'); + + $server->run(sub { return [ 200, [ 'Content-Type', 'text/plain' ], ["ok"] ] }); + } +); + +done_testing;