-#if 0
-#define MAILSLOTNAME "\\\\.\\mailslot\\pageant_listener"
- SECURITY_ATTRIBUTES sa;
- HANDLE my_mailslot, agent_mailslot;
- char name[64];
- char *p;
- DWORD msglen, byteswritten, bytesread, inid;
-
- *out = NULL;
- *outlen = 0;
-
- agent_mailslot = CreateFile(MAILSLOTNAME, GENERIC_WRITE,
- FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES)NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
- (HANDLE)NULL);
- debug(("opened %s: %p\n", MAILSLOTNAME, agent_mailslot));
- if (agent_mailslot == INVALID_HANDLE_VALUE)
- return;
-
- inid = GetCurrentThreadId();
- inid--;
-
- sa.nLength = sizeof(sa);
- sa.lpSecurityDescriptor = NULL;
- sa.bInheritHandle = TRUE;
-
- do {
- sprintf(name, "\\\\.\\mailslot\\pclient_request_%08x", ++inid);
- /*
- * Five-minute timeout.
- */
- my_mailslot = CreateMailslot(name, 0, 0, &sa);
- debug(("mailslot %s: %p\n", name, my_mailslot));
- } while (my_mailslot == INVALID_HANDLE_VALUE);
- Sleep(3000);
-
- msglen = strlen(name) + 1 + inlen;
- p = malloc(msglen);
- if (!p) {
- CloseHandle(my_mailslot);
- CloseHandle(agent_mailslot);
- return;
- }
-
- strcpy(p, name);
- memcpy(p+strlen(p)+1, in, inlen);
-
- debug(("ooh\n"));
- if (WriteFile(agent_mailslot, p, msglen, &byteswritten, NULL) == 0) {
- debug(("eek!\n"));
- free(p);
- CloseHandle(my_mailslot);
- CloseHandle(agent_mailslot);
- return;
- }
- debug(("aah\n"));
- free(p);
- CloseHandle(agent_mailslot);
-
- WaitForSingleObject(my_mailslot, 3000000);
- debug(("waited\n"));
- if (!GetMailslotInfo(my_mailslot, NULL, &msglen, NULL, NULL)) {
- CloseHandle(my_mailslot);
- return;
- }
- if (msglen == MAILSLOT_NO_MESSAGE) {
- debug(("no message\n"));
- CloseHandle(my_mailslot);
- return;
- }
- debug(("msglen=%d\n", msglen));
- p = malloc(msglen);
- if (!p) {
- CloseHandle(my_mailslot);
- return;
- }
- if (ReadFile(my_mailslot, p, msglen, &bytesread, NULL) == 0 &&
- bytesread == msglen) {
- *out = p;
- *outlen = msglen;
- }
- CloseHandle(my_mailslot);
-#endif