1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2025-04-16 06:44:05 +00:00

Merge branch 'master' into master

This commit is contained in:
Durairaj Subramaniam 2024-10-02 00:38:17 +01:00 committed by GitHub
commit 98419cda91
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 47 additions and 25 deletions

View file

@ -44,12 +44,12 @@ jobs:
echo "RUSTFLAGS=-C target-feature=+crt-static" >> $GITHUB_ENV
- name: Install Rust (${{ matrix.version.name }})
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: ${{ matrix.version.version }}
- name: Install just, cargo-hack, cargo-nextest, cargo-ci-cache-clean
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just,cargo-hack,cargo-nextest,cargo-ci-cache-clean
@ -80,10 +80,10 @@ jobs:
uses: rui314/setup-mold@v1
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
- name: Install just, cargo-hack
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just,cargo-hack

View file

@ -59,12 +59,12 @@ jobs:
uses: rui314/setup-mold@v1
- name: Install Rust (${{ matrix.version.name }})
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: ${{ matrix.version.version }}
- name: Install just, cargo-hack, cargo-nextest, cargo-ci-cache-clean
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just,cargo-hack,cargo-nextest,cargo-ci-cache-clean
@ -92,7 +92,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly
@ -108,12 +108,12 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly
- name: Install just
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just

View file

@ -18,13 +18,13 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly
components: llvm-tools
- name: Install just, cargo-llvm-cov, cargo-nextest
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just,cargo-llvm-cov,cargo-nextest

View file

@ -18,7 +18,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly
components: rustfmt
@ -36,7 +36,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
components: clippy
@ -55,7 +55,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly
components: rust-docs
@ -72,12 +72,12 @@ jobs:
- uses: actions/checkout@v4
- name: Install Rust (nightly-2024-05-01)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly-2024-05-01
- name: Install just
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: just
@ -101,12 +101,12 @@ jobs:
uses: actions/checkout@v4
- name: Install Rust (nightly-2024-09-30)
uses: actions-rust-lang/setup-rust-toolchain@v1.9.0
uses: actions-rust-lang/setup-rust-toolchain@v1.10.0
with:
toolchain: nightly-2024-09-30
- name: Install cargo-public-api
uses: taiki-e/install-action@v2.43.1
uses: taiki-e/install-action@v2.44.15
with:
tool: cargo-public-api

View file

@ -3,6 +3,7 @@
## Unreleased
- Minimum supported Rust version (MSRV) is now 1.75.
- On Windows platforms, produce an error when invoking `HttpServer::bind` on a socket that's already in use. See [issue 2958](https://github.com/actix/actix-web/issues/2958).
## 4.9.0

View file

@ -1085,7 +1085,10 @@ fn create_tcp_listener(addr: net::SocketAddr, backlog: u32) -> io::Result<net::T
use socket2::{Domain, Protocol, Socket, Type};
let domain = Domain::for_address(addr);
let socket = Socket::new(domain, Type::STREAM, Some(Protocol::TCP))?;
socket.set_reuse_address(true)?;
#[cfg(not(windows))]
{
socket.set_reuse_address(true)?;
}
socket.bind(&addr.into())?;
// clamp backlog to max u32 that fits in i32 range
let backlog = cmp::min(backlog, i32::MAX as u32) as i32;

View file

@ -1,13 +1,10 @@
#[cfg(feature = "openssl")]
extern crate tls_openssl as openssl;
#[cfg(any(unix, feature = "openssl"))]
use {
actix_web::{web, App, HttpResponse, HttpServer},
std::{sync::mpsc, thread, time::Duration},
};
use std::{sync::mpsc, thread, time::Duration};
use actix_web::{web, App, HttpResponse, HttpServer};
#[cfg(unix)]
#[actix_rt::test]
async fn test_start() {
let addr = actix_test::unused_addr();
@ -53,6 +50,27 @@ async fn test_start() {
let response = client.get(host.clone()).send().await.unwrap();
assert!(response.status().is_success());
// Attempt to start a second server using the same address.
let result = HttpServer::new(|| {
App::new().service(
web::resource("/").route(web::to(|| async { HttpResponse::Ok().body("test") })),
)
})
.workers(1)
.backlog(1)
.max_connections(10)
.max_connection_rate(10)
.keep_alive(Duration::from_secs(10))
.client_request_timeout(Duration::from_secs(5))
.client_disconnect_timeout(Duration::ZERO)
.server_hostname("localhost")
.system_exit()
.disable_signals()
.bind(format!("{}", addr));
// This should fail: the address is in use.
assert!(result.is_err());
srv.stop(false).await;
}