ext/soap: Windows handles query strings differently
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 40.4k
- Forks
- 8.1k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 96
Description
If I'm right, that would also happen on other OSs if ext/soap is built as shared library.
Nope, has nothing to do with shared libs – Windows specific issue.
The problem is that SoapServer expects "wsdl" as query string to deliver the WSDL. However, if a query string doesn't contain an equals sign, command line options are ignored on Windows. So either hack-around by making SoapServer more deliberate:
ext/soap/soap.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index 48a7fc8885..d7dfc4ecd5 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -1297,7 +1297,8 @@ PHP_METHOD(SoapServer, handle)
if (SG(request_info).request_method &&
strcmp(SG(request_info).request_method, "GET") == 0 &&
SG(request_info).query_string &&
- stricmp(SG(request_info).query_string, "wsdl") == 0) {
+ (stricmp(SG(request_info).query_string, "wsdl") == 0 ||
+ stricmp(SG(request_info).query_string, "wsdl=") == 0)) {
if (service->sdl) {
/*
or apply a proper fix for the tests, namely to spawn a php-cgi process with the command line options, and then send a CGI request and verify the response. Certainly possible, but I'm not sure it's worth the effort.
Originally posted by @cmb69 in https://github.com/php/php-src/issues/17432#issuecomment-2589593847
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in ext/soap/soap.c at SoapServer::handle and review how the Windows CGI query string behavior affects the "wsdl" request. Compare the proposed one-file handling change with the alternative CGI test approach described in the issue. Done means Windows serves the WSDL for the affected query string and the behavior is covered by appropriate regression testing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, php
- Domain
- api, backend, operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100