Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 1822 - Не работает связь с сервером 1С:Образования через wininet.dll   Make a simular bug
Summary: Не работает связь с сервером 1С:Образования через wininet.dll
Status: CLOSED FIXED
Alias: None
Product: Wine School
Classification: Продукты (Products)
Component: 1С Образование (show other bugs)
Version: 0.9
Hardware: PC Linux
: P2 critical
Target Milestone: ---
Assignee: Александр Морозов
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 680 934 1964 2010
  Show dependency treegraph
 
In work:
Reported: 2008-05-16 14:13 MSD by Синицын Иван
Modified: 2011-03-24 12:33 MSK (History)
4 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Синицын Иван 2008-05-16 14:13:11 MSD
Для запуска сервера 1С Образования приходится использовать native библиотеку wininet.dll, т.к. втроенная уходит бесконечный цикл отправки и приема сообщений. Необходимо разобраться, чего не хватает и дописать.
Comment 1 Vitaly Lipatov 2008-05-26 20:57:25 MSD
Надо посмотреть какие тесты есть, потрейсить, какие функции из библиотеки
используются, и попытаться выявить отличия от оригинальной wininet.dll
(скорее всего коды возврата?)
Comment 2 Синицын Иван 2008-05-29 16:24:19 MSD
Вот кусок трейса который постоянно повторяется.

trace:wininet:HTTP_OpenConnection -->
trace:wininet:HTTP_OpenConnection 1 <--
trace:wininet:HTTP_HttpSendRequestW full request -> "POST /1CEduWeb/servlet/AxisServlet HTTP/1.1\r\nAccept: text/xml\r\nHost: euclid\r\nCookie: JSESSIONID=97E3241C5CC74438A1E5EEB39C53CFB4\r\nSOAPAction: \"1\"\r\nContent-Type: text/xml\r\nContent-Length: 438\r\nUser-Agent: Borland SOAP 1.1\r\nConnection: Keep-Alive\r\n\r\n<?xml version=\"1.0\"?>\r\n<SOA"...
trace:wininet:HTTP_GetResponseHeaders -->
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :16 HTTP/1.1 200 OK
trace:wininet:HTTP_GetResponseHeaders version [L"HTTP/1.1"] status code [L"200"] status text [L"OK"]
trace:wininet:HTTP_ProcessHeader --> L"Status": L"200" - 0x80000000
trace:wininet:HTTP_GetCustomHeaderIndex L"Status"
trace:wininet:HTTP_GetCustomHeaderIndex Return: -1
trace:wininet:HTTP_InsertCustomHeader --> L"Status": L"200"
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :38 Content-Type: text/xml; charset=utf-8
trace:wininet:HTTP_GetResponseHeaders got line "Content-Type: text/xml; charset=utf-8", now interpreting
trace:wininet:HTTP_InterpretHttpHeader field(L"Content-Type") Value(L"text/xml; charset=utf-8")
trace:wininet:HTTP_ProcessHeader --> L"Content-Type": L"text/xml; charset=utf-8" - 0x20000000
trace:wininet:HTTP_InsertCustomHeader --> L"Content-Type": L"text/xml; charset=utf-8"
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :27 Transfer-Encoding: chunked
trace:wininet:HTTP_GetResponseHeaders got line "Transfer-Encoding: chunked", now interpreting
trace:wininet:HTTP_InterpretHttpHeader field(L"Transfer-Encoding") Value(L"chunked")
trace:wininet:HTTP_ProcessHeader --> L"Transfer-Encoding": L"chunked" - 0x20000000
trace:wininet:HTTP_InsertCustomHeader --> L"Transfer-Encoding": L"chunked"
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :36 Date: Thu, 29 May 2008 12:21:54 GMT
trace:wininet:HTTP_GetResponseHeaders got line "Date: Thu, 29 May 2008 12:21:54 GMT", now interpreting
trace:wininet:HTTP_InterpretHttpHeader field(L"Date") Value(L"Thu, 29 May 2008 12:21:54 GMT")
trace:wininet:HTTP_ProcessHeader --> L"Date": L"Thu, 29 May 2008 12:21:54 GMT" - 0x20000000
trace:wininet:HTTP_InsertCustomHeader --> L"Date": L"Thu, 29 May 2008 12:21:54 GMT"
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :26 Server: Apache Coyote/1.0
trace:wininet:HTTP_GetResponseHeaders got line "Server: Apache Coyote/1.0", now interpreting
trace:wininet:HTTP_InterpretHttpHeader field(L"Server") Value(L"Apache Coyote/1.0")
trace:wininet:HTTP_ProcessHeader --> L"Server": L"Apache Coyote/1.0" - 0x20000000
trace:wininet:HTTP_InsertCustomHeader --> L"Server": L"Apache Coyote/1.0"
trace:wininet:NETCON_getNextLine
trace:wininet:NETCON_getNextLine :1
trace:wininet:HTTP_GetResponseHeaders got line "", now interpreting
trace:wininet:HTTP_GetResponseHeaders raw headers: L"HTTP/1.1 200 OK\r\nContent-Type: text/xml; charset=utf-8\r\nTransfer-Encoding: chunked\r\nDate: Thu, 29 May 2008 12:21:54 GMT\r\nServer: Apache Coyote/1.0\r\n\r\n"
trace:wininet:HTTP_GetResponseHeaders <--
trace:wininet:HTTP_GetCustomHeaderIndex L"Set-Cookie"
trace:wininet:HTTP_GetCustomHeaderIndex Return: -1
trace:wininet:HTTP_GetCustomHeaderIndex L"Content-Length"
trace:wininet:HTTP_GetCustomHeaderIndex Return: -1
trace:wininet:HTTP_GetCustomHeaderIndex L"Transfer-Encoding"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 10
trace:wininet:HTTP_HttpQueryInfoW  returning string : L"chunked"
trace:wininet:HTTP_GetCustomHeaderIndex L"Status"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 8
trace:wininet:HTTP_HttpQueryInfoW  returning number : 200
trace:wininet:HTTP_HttpSendRequestW <--
trace:wininet:WININET_Release object 0x154bc0 refcount = 1
trace:wininet:InternetErrorDlg 0x10020 0x3 12150 00000007 0x32fab0
trace:wininet:HttpSendRequestW 0x3, (null), 0, 0xdd0c28, 438)
trace:wininet:WININET_AddRef 0x154bc0 -> refcount = 2
trace:wininet:WININET_GetObject handle 3 -> 0x154bc0
trace:wininet:HTTP_HttpSendRequestW --> 0x154bc0
trace:wininet:HTTP_HttpAddRequestHeadersW copying header: L"Content-Length: 438\r\n"
trace:wininet:HTTP_HttpAddRequestHeadersW interpreting header L"Content-Length: 438"
trace:wininet:HTTP_InterpretHttpHeader field(L"Content-Length") Value(L"438")
trace:wininet:HTTP_ProcessHeader --> L"Content-Length": L"438" - 0x12000000
trace:wininet:HTTP_GetCustomHeaderIndex L"Content-Length"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 5
trace:wininet:HTTP_HttpAddRequestHeadersW copying header: L"User-Agent: Borland SOAP 1.1\r\n"
trace:wininet:HTTP_HttpAddRequestHeadersW interpreting header L"User-Agent: Borland SOAP 1.1"
trace:wininet:HTTP_InterpretHttpHeader field(L"User-Agent") Value(L"Borland SOAP 1.1")
trace:wininet:HTTP_ProcessHeader --> L"User-Agent": L"Borland SOAP 1.1" - 0x12000000
trace:wininet:HTTP_GetCustomHeaderIndex L"User-Agent"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 6
trace:wininet:HTTP_FinishedReading
trace:wininet:HTTP_HttpQueryInfoW returning data: L"HTTP/1.1"
trace:wininet:HTTP_GetCustomHeaderIndex L"Host"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 1
trace:wininet:HTTP_HttpSendRequestW Going to url L"euclid" L"/1CEduWeb/servlet/AxisServlet"
trace:wininet:HTTP_ProcessHeader --> L"Connection": L"Keep-Alive" - 0x82000000
trace:wininet:HTTP_GetCustomHeaderIndex L"Connection"
trace:wininet:HTTP_GetCustomHeaderIndex Return: 7
trace:wininet:HTTP_InsertCustomHeader --> L"Connection": L"Keep-Alive"
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Accept" (L"text/xml")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Host" (L"euclid")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Cookie" (L"JSESSIONID=97E3241C5CC74438A1E5EEB39C53CFB4")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"SOAPAction" (L"\"1\"")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Content-Type" (L"text/xml")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Content-Length" (L"438")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"User-Agent" (L"Borland SOAP 1.1")
trace:wininet:HTTP_BuildHeaderRequestString Adding custom header L"Connection" (L"Keep-Alive")
trace:wininet:HTTP_HttpSendRequestW Request header -> L"POST /1CEduWeb/servlet/AxisServlet HTTP/1.1\r\nAccept: text/xml\r\nHost: euclid\r\nCookie: JSESSIONID=97E3241C5CC74438A1E5EEB39C53CFB4\r\nSOAPAction: \"1\"\r\nContent-Type: text/xml\r\nContent-Length: 438\r\nUser-Agent: Borland SOAP 1.1\r\nConnection: Keep-Alive\r\n\r\n"
trace:wininet:HTTP_OpenConnection -->
trace:wininet:HTTP_OpenConnection 1 <--
Comment 3 BUGS@Etersoft 2008-06-14 22:14:19 MSD
*** Bug 680 has been marked as a duplicate of this bug. ***
Comment 4 Александр Морозов 2008-06-16 19:21:46 MSD
В логе, получаемом с помощью WINEDEBUG=+wininet ww ServerManager.exe 2>&1 | egrep -v '(WININET_|HTTP_|NETCON_|COOKIE_)', повторяется такой кусок:

trace:wininet:HttpSendRequestW 0x3, (null), 0, 0x639798, 433)
trace:wininet:InternetSetCookieW (L"http://euclid/",L"JSESSIONID",L"F5A569EF0411110C02064CD6A6EE0701")
trace:wininet:InternetCrackUrlW (L"http://euclid/" 0 0 0x32c694)
trace:wininet:SetUrlComponentValueW (null) (0)
trace:wininet:GetInternetSchemeW L"http" 4
trace:wininet:SetUrlComponentValueW L"http" (4)
trace:wininet:SetUrlComponentValueW (null) (0)
trace:wininet:SetUrlComponentValueW (null) (0)
trace:wininet:SetUrlComponentValueW L"euclid" (6)
trace:wininet:SetUrlComponentValueW L"/" (1)
trace:wininet:InternetCrackUrlW L"http://euclid/": scheme((null)) host(L"euclid") path(L"/") extra((null))
trace:wininet:set_cookie setting cookie L"JSESSIONID"=L"F5A569EF0411110C02064CD6A6EE0701" for domain L"euclid"
trace:wininet:InternetErrorDlg 0x30020 0x3 12150 00000007 0x32fbc8

Это повторяющийся вызов HttpSendRequestA и InternetErrorDlg. Все вызовы здесь вплоть до set_cookie включительно происходят внутри HttpSendRequestA (это можно увидеть с помощью +relay).

С родной wininet.dll также вызываются HttpSendRequestA и InternetErrorDlg, но не бесконечное число раз (если сервер запускается с первого раза, то вообще 1 раз).
Comment 5 Александр Морозов 2008-06-16 19:27:26 MSD
Лог sudo tcpdump -ni any port 8092 с wininet из Wine состоит из очень большого числа вот таких повторяющихся строчек:
18:54:31.225519 IP 192.168.0.54.48263 > 192.168.0.54.8092: S 1629256378:1629256378(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:54:31.225679 IP 192.168.0.54.8092 > 192.168.0.54.48263: R 0:0(0) ack 1629256379 win 0
18:54:31.248909 IP 192.168.0.54.48265 > 192.168.0.54.8092: S 1637912845:1637912845(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:54:31.248920 IP 192.168.0.54.8092 > 192.168.0.54.48265: R 0:0(0) ack 1637912846 win 0

При использовании родной wininet.dll:
18:58:40.807670 IP 192.168.0.54.54970 > 192.168.0.54.8092: S 1258596986:1258596986(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:40.807742 IP 192.168.0.54.8092 > 192.168.0.54.54970: R 0:0(0) ack 1258596987 win 0
........ много аналогичных строчек ........
18:58:43.053279 IP 192.168.0.54.56017 > 192.168.0.54.8092: S 1289719622:1289719622(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:43.053298 IP 192.168.0.54.8092 > 192.168.0.54.56017: R 0:0(0) ack 1289719623 win 0
18:58:44.059718 IP 192.168.0.54.56018 > 192.168.0.54.8092: S 1301085809:1301085809(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:44.059734 IP 192.168.0.54.8092 > 192.168.0.54.56018: S 1310949479:1310949479(0) ack 1301085810 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:44.059743 IP 192.168.0.54.56018 > 192.168.0.54.8092: . ack 1 win 513
18:58:44.060121 IP 192.168.0.54.56018 > 192.168.0.54.8092: F 1:1(0) ack 1 win 513
18:58:44.062669 IP 192.168.0.54.8092 > 192.168.0.54.56018: . ack 2 win 513
18:58:44.097085 IP 192.168.0.54.57410 > 192.168.0.54.8092: S 1301636514:1301636514(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:44.097108 IP 192.168.0.54.8092 > 192.168.0.54.57410: S 1309156623:1309156623(0) ack 1301636515 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:58:44.097122 IP 192.168.0.54.57410 > 192.168.0.54.8092: . ack 1 win 513
18:58:44.097546 IP 192.168.0.54.57410 > 192.168.0.54.8092: P 1:652(651) ack 1 win 513
18:58:44.097557 IP 192.168.0.54.8092 > 192.168.0.54.57410: . ack 652 win 533
18:58:46.346808 IP 192.168.0.54.8092 > 192.168.0.54.56018: F 1:1(0) ack 2 win 513
18:58:46.346835 IP 192.168.0.54.56018 > 192.168.0.54.8092: . ack 2 win 513
18:58:47.447889 IP 192.168.0.54.8092 > 192.168.0.54.57410: P 1:215(214) ack 652 win 533
18:58:47.447930 IP 192.168.0.54.57410 > 192.168.0.54.8092: . ack 215 win 530
18:58:47.448924 IP 192.168.0.54.8092 > 192.168.0.54.57410: P 215:708(493) ack 652 win 533
18:58:47.448937 IP 192.168.0.54.57410 > 192.168.0.54.8092: . ack 708 win 546
18:58:47.449568 IP 192.168.0.54.8092 > 192.168.0.54.57410: F 708:708(0) ack 652 win 533
18:58:47.449669 IP 192.168.0.54.57410 > 192.168.0.54.8092: F 652:652(0) ack 709 win 546
18:58:47.449677 IP 192.168.0.54.8092 > 192.168.0.54.57410: . ack 653 win 533

Когда у сервера не получается запуститься с родной wininet.dll, логи выглядят также, как и со встроенной. Иногда с родной wininet.dll в начале лога нет повторяющихся строчек с S- и R-пакетами.
Comment 6 Александр Морозов 2008-06-17 18:52:21 MSD
В случае со встроенной wininet.dll (если подождать и если повезёт) соединение таки может устанавливаться, но через некоторое время его разрывает клиент:
.................
18:12:41.230912 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: S 2834412164:2834412164(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:12:41.230924 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37887: S 2830011604:2830011604(0) ack 2834412165 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:12:41.230934 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: . ack 1 win 513
18:12:41.230964 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: P 1:629(628) ack 1 win 513
18:12:41.230970 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37887: . ack 629 win 532
18:12:41.233040 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37886: P 224:229(5) ack 630 win 532
18:12:41.233054 IP euclid.office.etersoft.ru.37886 > euclid.office.etersoft.ru.8092: R 2843512033:2843512033(0) win 0
18:12:41.233706 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37887: P 1:224(223) ack 629 win 532
18:12:41.233725 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: . ack 224 win 530
18:12:41.234012 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: F 629:629(0) ack 224 win 530
18:12:41.234058 IP euclid.office.etersoft.ru.37888 > euclid.office.etersoft.ru.8092: S 2839423448:2839423448(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:12:41.234070 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37888: S 2839378418:2839378418(0) ack 2839423449 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 6>
18:12:41.234080 IP euclid.office.etersoft.ru.37888 > euclid.office.etersoft.ru.8092: . ack 1 win 513
18:12:41.234107 IP euclid.office.etersoft.ru.37888 > euclid.office.etersoft.ru.8092: P 1:629(628) ack 1 win 513
18:12:41.234113 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37888: . ack 629 win 532
18:12:41.234406 IP euclid.office.etersoft.ru.8092 > euclid.office.etersoft.ru.37887: P 224:229(5) ack 630 win 532
18:12:41.234421 IP euclid.office.etersoft.ru.37887 > euclid.office.etersoft.ru.8092: R 2834412794:2834412794(0) win 0
.................
Видимо, причина в том, что сервер неправильно отвечает на пакет FIN
Comment 7 Александр Морозов 2008-06-18 20:39:10 MSD
Порт, который слушает tomcat после его запуска ServerManager`ом, настраивается в c:/Program Files/1C Education/1CE3/common/tomcat/conf/server.xml в строке <Server port="8200" ...>.

tomcat можно запустить под wine без ServerManager с помощью команды ww "C:\\Program Files\\1C Education\\1CE3\\common\\jre\\bin\\java.exe" -jar -Duser.dir="C:\\Program Files\\1C Education\\1CE3\\common\\tomcat" "C:\\Program Files\\1C Education\\1CE3\\common\\tomcat\\bin\\bootstrap.jar" start
Comment 8 Александр Морозов 2008-06-19 17:49:50 MSD
Firebird можно запустить на определённом порту (например, 6666) с помощью команды
ww "C:\\Program Files\\Common Files\\1C Education Shared\\fb\\bin\\ibserver.exe" -a -p 6666
При этом в трее появляется его значок. Остановить его можно, если щёлкнуть на этом значке правой кнопкой и выбрать Shutdown.
Comment 9 Александр Морозов 2008-06-19 18:42:43 MSD
Чтобы всё работало, когда Firebird запущен на другом порту, надо заменить номер порта в файле c:/Program Files/1C Education/1CE3/common/tomcat/webapps/1CEduWeb/WEB-INF/ls.xml
Comment 10 Александр Морозов 2008-06-20 18:17:05 MSD
Написал тестовую программу-клиент, подключающуюся к запущенному вручную tomcat`у из 1С:Образование. В программе есть цикл, в котором выполняется HttpSendRequestA. Если заставить цикл выполняться порядка 100 раз, то при использовании встроееной в Wine wininet tomcat выводит ошибки "java.net.SocketException: Connection reset by peer: socket write error". С wininet из Windows никаких ошибок нет.

С помощью strace -f -e trace=network ww wininet_connect.exe (wininet_connect.exe - та самая тестовая программа-клиент) можно посмотреть, как происходит обращение к tomcat.

wininet из Wine:
[pid 10021] socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 18
[pid 10021] connect(18, {sa_family=AF_INET, sin_port=htons(8095), sin_addr=inet_addr("192.168.0.54")}, 16) = 0
[pid 10021] send(18, "POST /1CEduWeb/servlet/AxisServle"..., 598, 0) = 598
[pid 10021] recv(18, "HTTP/1.1 200 OK\r\nSet-Cookie: JSES"..., 1460, MSG_PEEK) = 223
[pid 10021] recv(18, "H"..., 1, 0)      = 1
..............
[pid 10021] recv(18, "\n"..., 1, 0)     = 1

wininet из Windows:
[pid 11988] bind(21, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[pid 11988] getsockname(21, {sa_family=AF_INET, sin_port=htons(53665), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
[pid 11988] connect(21, {sa_family=AF_INET, sin_port=htons(8095), sin_addr=inet_addr("192.168.0.54")}, 16) = -1 EINPROGRESS (Operation now in progress)
[pid 11988] setsockopt(21, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 11988] setsockopt(21, SOL_SOCKET, SO_RCVTIMEO, "\20\16\0\0\0\0\0\0"..., 8) = 0
[pid 11988] setsockopt(21, SOL_SOCKET, SO_LINGER, {onoff=1, linger=0}, 8) = 0
[pid 11988] sendmsg(21, {msg_name(0)=NULL, msg_iov(1)=[{"POST /1CEduWeb/servlet/AxisServle"..., 621}], msg_controllen=0, msg_flags=0}, 0) = 621
[pid 11988] getsockopt(21, SOL_SOCKET, SO_SNDTIMEO, "\0\0\0\0\0\0\0\0"..., [8]) = 0
[pid 11988] recvmsg(21, 0x66f790, 0)    = -1 EAGAIN (Resource temporarily unavailable)
[pid 11988] getsockopt(21, SOL_SOCKET, SO_RCVTIMEO, "\20\16\0\0\0\0\0\0"..., [8]) = 0
[pid 11988] recvmsg(21, {msg_name(0)=NULL, msg_iov(1)=[{"HTTP/1.1 200 OK\r\nSet-Cookie: JSES"..., 1024}], msg_controllen=0, msg_flags=0}, 0) = 707
[pid 11988] recvmsg(21, {msg_name(0)=NULL, msg_iov(1)=[{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 531}], msg_controllen=0, m
sg_flags=0}, 0) = 0
[pid 11988] setsockopt(21, SOL_SOCKET, SO_LINGER, {onoff=0, linger=0}, 8) = 0
Comment 11 Александр Морозов 2008-06-24 19:43:25 MSD
Написал тест для InternetErrorDlg
Comment 12 Александр Морозов 2008-06-26 16:08:28 MSD
ServerManager почему-то вызывает функции InternetConnectA и HttpOpenRequestA с ненулевым последним параметром. Он нужен вроде бы только при использовании callback-функции, но InternetSetStatusCallback не вызывается.
Comment 13 Александр Морозов 2008-06-27 13:26:40 MSD
Различаются заголовки HTTP, которые используются при обращении ServerManager.exe к tomcat, при использовании встроенной и сторонней wininet.dll.

Встроенная wininet:

POST /1CEduWeb/servlet/AxisServlet HTTP/1.1
Accept: text/xml
Host: euclid
SOAPAction: "1"
Content-Type: text/xml
Content-Length: 433
User-Agent: Borland SOAP 1.1
Connection: Keep-Alive

HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=9EBBE41DEC4526EA12D3C2762C2765EB; Path=/1CEduWeb
Content-Type: text/xml; charset=utf-8
Transfer-Encoding: chunked
Date: Fri, 27 Jun 2008 08:59:49 GMT
Server: Apache Coyote/1.0

wininet из Windows:

POST /1CEduWeb/servlet/AxisServlet HTTP/1.0
Accept: text/xml
SOAPAction: "1"
Content-Type: text/xml
User-Agent: Borland SOAP 1.1
Host: euclid:8080
Content-Length: 433
Connection: Keep-Alive
Pragma: no-cache

HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=9FA7631C050ED305CFD3D24FE290B088; Path=/1CEduWeb
Content-Type: text/xml; charset=utf-8
Date: Fri, 27 Jun 2008 09:01:44 GMT
Server: Apache Coyote/1.0
Connection: close
Comment 14 Александр Морозов 2008-06-27 14:37:26 MSD
Нашёл, в чём проблема. Всё дело в том, что wininet из Win пишет в заголовке HTTP/1.0, а из Wine - HTTP/1.1.

Если заменить в dlls/wininet/http.c в 3-х местах g_szHttp1_1 на g_szHttp1_0, то клиент запускается. Сервер тоже запускается, но не с первого раза.
Comment 15 Александр Морозов 2008-06-27 14:51:27 MSD
Можно на этом остановиться, а можно написать какие-нибудь тесты для включения в основной Wine.
Comment 16 Александр Морозов 2008-06-27 18:24:38 MSD
На Win98 и WinXP использующая wininet программа посылает заголовок с HTTP/1.1
Comment 17 Vitaly Lipatov 2008-06-27 22:12:38 MSD
Решение для wininet есть, в общем-то работает - клиент подключается без вопросов, сервер может быть иногда не успевает зарегистрировать tomcat.
Дальнейшее правильное решение отложено на багу 2010.
Comment 18 Виталий Перов 2011-03-24 12:33:06 MSK
Откатил патч:

commit 745674ddfdb60a54fcf8d35684e3586f3b056d0d
Author: Alexander Morozov <amorozov@builder.office.etersoft.ru>
Date:   Fri Jun 27 14:40:20 2008 +0400

    wininet: Hack for loading 1C:Obrazovanie client (eterbug #1822)


Посоветовался с lav@: бага не актуальна, и решать её не надо.