httpapi: Implement HttpAddUrlToUrlGroup() and HttpRemoveUrlFromUrlGroup().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f0458b2148
commit
f18e026e51
|
@ -1,6 +1,7 @@
|
||||||
@ stub HttpAddFragmentToCache
|
@ stub HttpAddFragmentToCache
|
||||||
@ stdcall HttpAddUrl(ptr wstr ptr)
|
@ stdcall HttpAddUrl(ptr wstr ptr)
|
||||||
@ stub HttpAddUrlToConfigGroup
|
@ stub HttpAddUrlToConfigGroup
|
||||||
|
@ stdcall HttpAddUrlToUrlGroup(int64 wstr int64 long)
|
||||||
@ stub HttpCancelHttpRequest
|
@ stub HttpCancelHttpRequest
|
||||||
@ stub HttpCreateAppPool
|
@ stub HttpCreateAppPool
|
||||||
@ stub HttpCreateConfigGroup
|
@ stub HttpCreateConfigGroup
|
||||||
|
@ -40,6 +41,7 @@
|
||||||
@ stub HttpRemoveAllUrlsFromConfigGroup
|
@ stub HttpRemoveAllUrlsFromConfigGroup
|
||||||
@ stdcall HttpRemoveUrl(ptr wstr)
|
@ stdcall HttpRemoveUrl(ptr wstr)
|
||||||
@ stub HttpRemoveUrlFromConfigGroup
|
@ stub HttpRemoveUrlFromConfigGroup
|
||||||
|
@ stdcall HttpRemoveUrlFromUrlGroup(int64 wstr long)
|
||||||
@ stub HttpSendHttpRequest
|
@ stub HttpSendHttpRequest
|
||||||
@ stdcall HttpSendHttpResponse(ptr int64 long ptr ptr ptr ptr long ptr ptr)
|
@ stdcall HttpSendHttpResponse(ptr int64 long ptr ptr ptr ptr long ptr ptr)
|
||||||
@ stub HttpSendRequestEntityBody
|
@ stub HttpSendRequestEntityBody
|
||||||
|
|
|
@ -27,6 +27,14 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(httpapi);
|
WINE_DEFAULT_DEBUG_CHANNEL(httpapi);
|
||||||
|
|
||||||
|
static WCHAR *heap_strdupW(const WCHAR *str)
|
||||||
|
{
|
||||||
|
int len = wcslen(str) + 1;
|
||||||
|
WCHAR *ret = heap_alloc(len * sizeof(WCHAR));
|
||||||
|
wcscpy(ret, str);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID lpv )
|
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID lpv )
|
||||||
{
|
{
|
||||||
switch(reason)
|
switch(reason)
|
||||||
|
@ -247,21 +255,13 @@ ULONG WINAPI HttpAddUrl(HANDLE queue, const WCHAR *url, void *reserved)
|
||||||
return add_url(queue, url, 0);
|
return add_url(queue, url, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
static ULONG remove_url(HANDLE queue, const WCHAR *urlW)
|
||||||
* HttpRemoveUrl (HTTPAPI.@)
|
|
||||||
*/
|
|
||||||
ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *urlW)
|
|
||||||
{
|
{
|
||||||
ULONG ret = ERROR_SUCCESS;
|
ULONG ret = ERROR_SUCCESS;
|
||||||
OVERLAPPED ovl = {};
|
OVERLAPPED ovl = {};
|
||||||
char *url;
|
char *url;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
TRACE("queue %p, url %s.\n", queue, debugstr_w(urlW));
|
|
||||||
|
|
||||||
if (!queue)
|
|
||||||
return ERROR_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
len = WideCharToMultiByte(CP_ACP, 0, urlW, -1, NULL, 0, NULL, NULL);
|
len = WideCharToMultiByte(CP_ACP, 0, urlW, -1, NULL, 0, NULL, NULL);
|
||||||
if (!(url = heap_alloc(len)))
|
if (!(url = heap_alloc(len)))
|
||||||
return ERROR_OUTOFMEMORY;
|
return ERROR_OUTOFMEMORY;
|
||||||
|
@ -276,6 +276,19 @@ ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *urlW)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* HttpRemoveUrl (HTTPAPI.@)
|
||||||
|
*/
|
||||||
|
ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *url)
|
||||||
|
{
|
||||||
|
TRACE("queue %p, url %s.\n", queue, debugstr_w(url));
|
||||||
|
|
||||||
|
if (!queue)
|
||||||
|
return ERROR_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
return remove_url(queue, url);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* HttpReceiveHttpRequest (HTTPAPI.@)
|
* HttpReceiveHttpRequest (HTTPAPI.@)
|
||||||
*/
|
*/
|
||||||
|
@ -475,6 +488,8 @@ struct url_group
|
||||||
{
|
{
|
||||||
struct list entry, session_entry;
|
struct list entry, session_entry;
|
||||||
HANDLE queue;
|
HANDLE queue;
|
||||||
|
WCHAR *url;
|
||||||
|
HTTP_URL_CONTEXT context;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct list url_groups = LIST_INIT(url_groups);
|
static struct list url_groups = LIST_INIT(url_groups);
|
||||||
|
@ -622,5 +637,59 @@ ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID id, HTTP_SERVER_PROPERTY
|
||||||
|
|
||||||
group->queue = info->RequestQueueHandle;
|
group->queue = info->RequestQueueHandle;
|
||||||
|
|
||||||
|
if (group->url)
|
||||||
|
add_url(group->queue, group->url, group->context);
|
||||||
|
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* HttpAddUrlToUrlGroup (HTTPAPI.@)
|
||||||
|
*/
|
||||||
|
ULONG WINAPI HttpAddUrlToUrlGroup(HTTP_URL_GROUP_ID id, const WCHAR *url,
|
||||||
|
HTTP_URL_CONTEXT context, ULONG reserved)
|
||||||
|
{
|
||||||
|
struct url_group *group = get_url_group(id);
|
||||||
|
|
||||||
|
TRACE("id %s, url %s, context %s, reserved %#x.\n", wine_dbgstr_longlong(id),
|
||||||
|
debugstr_w(url), wine_dbgstr_longlong(context), reserved);
|
||||||
|
|
||||||
|
if (group->url)
|
||||||
|
{
|
||||||
|
FIXME("Multiple URLs are not handled!\n");
|
||||||
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(group->url = heap_strdupW(url)))
|
||||||
|
return ERROR_OUTOFMEMORY;
|
||||||
|
group->context = context;
|
||||||
|
|
||||||
|
if (group->queue)
|
||||||
|
return add_url(group->queue, url, context);
|
||||||
|
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* HttpRemoveUrlFromUrlGroup (HTTPAPI.@)
|
||||||
|
*/
|
||||||
|
ULONG WINAPI HttpRemoveUrlFromUrlGroup(HTTP_URL_GROUP_ID id, const WCHAR *url, ULONG flags)
|
||||||
|
{
|
||||||
|
struct url_group *group = get_url_group(id);
|
||||||
|
|
||||||
|
TRACE("id %s, url %s, flags %#x.\n", wine_dbgstr_longlong(id), debugstr_w(url), flags);
|
||||||
|
|
||||||
|
if (!group->url)
|
||||||
|
return ERROR_FILE_NOT_FOUND;
|
||||||
|
|
||||||
|
if (flags)
|
||||||
|
FIXME("Ignoring flags %#x.\n", flags);
|
||||||
|
|
||||||
|
heap_free(group->url);
|
||||||
|
group->url = NULL;
|
||||||
|
|
||||||
|
if (group->queue)
|
||||||
|
return remove_url(group->queue, url);
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -425,6 +425,7 @@ typedef struct _HTTP_BINDING_INFO
|
||||||
} HTTP_BINDING_INFO, *PHTTP_BINDING_INFO;
|
} HTTP_BINDING_INFO, *PHTTP_BINDING_INFO;
|
||||||
|
|
||||||
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
||||||
|
ULONG WINAPI HttpAddUrlToUrlGroup(HTTP_URL_GROUP_ID id, const WCHAR *url, HTTP_URL_CONTEXT context, ULONG reserved);
|
||||||
ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID id);
|
ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID id);
|
||||||
ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID id);
|
ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID id);
|
||||||
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
||||||
|
@ -436,6 +437,7 @@ ULONG WINAPI HttpTerminate(ULONG flags, void *reserved);
|
||||||
ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED);
|
ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED);
|
||||||
ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl);
|
ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl);
|
||||||
ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *url);
|
ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *url);
|
||||||
|
ULONG WINAPI HttpRemoveUrlFromUrlGroup(HTTP_URL_GROUP_ID id, const WCHAR *url, ULONG flags);
|
||||||
ULONG WINAPI HttpSendHttpResponse(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_RESPONSE *response, HTTP_CACHE_POLICY *cache_policy, ULONG *ret_size, void *reserved1, ULONG reserved2, OVERLAPPED *ovl, HTTP_LOG_DATA *log_data);
|
ULONG WINAPI HttpSendHttpResponse(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_RESPONSE *response, HTTP_CACHE_POLICY *cache_policy, ULONG *ret_size, void *reserved1, ULONG reserved2, OVERLAPPED *ovl, HTTP_LOG_DATA *log_data);
|
||||||
ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
||||||
ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID id, HTTP_SERVER_PROPERTY property, void *value, ULONG length);
|
ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID id, HTTP_SERVER_PROPERTY property, void *value, ULONG length);
|
||||||
|
|
Loading…
Reference in New Issue