No subject


Wed Feb 11 21:28:26 CST 2009


static unsigned int send_request( const struct __server_request_info *req )

Strange thing is, from strace output, it seems the writev send 1 buffer of
length 64, which means the whole content is written:
writev(3,
[{"\32\0\0\0\230\3763\0\320\3763\0(\0\0\0\1\0\0\0\0@\375\177\30\30\350~\0\0\0\0\0"...,
64}], 1) = 64

Looking at the source code
if ((ret = writev( ntdll_get_thread_data()->request_fd, vec, i+1 )) ==
     req->u.req.request_header.request_size + sizeof(req->u.req)) return
STATUS_SUCCESS;

it would mean that the left hand of the comparison does not correspond to the
size of the buffer. As sizeof(req->u.req) is the 64 passed to writev, it may
comes from req->u.req.request_header.request_size being non-zero.

This is confirmed by the fact that we're in the else part of a
if(!req->u.req.request_header.request_size)

To sum up, it seems that only the header is sent, i.e. the request data_count
is 0 whereas the request_size is not 0. I don't know where this invalid request
could come from.


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list