]> git.ipfire.org Git - thirdparty/squid.git/blame - src/win32.cc
Prep for 3.3.12 and 3.4.4
[thirdparty/squid.git] / src / win32.cc
CommitLineData
3b1797bd 1/*
1b52df9a 2 * Windows support
3 * AUTHOR: Guido Serassio <serassio@squid-cache.org>
4 * inspired by previous work by Romeo Anghelache & Eric Stern.
376f7892 5 *
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
8 *
9 * Squid is the result of efforts by numerous individuals from
10 * the Internet community; see the CONTRIBUTORS file for full
11 * details. Many organizations have provided support for Squid's
12 * development; see the SPONSORS file for full details. Squid is
13 * Copyrighted (C) 2001 by the Regents of the University of
14 * California; see the COPYRIGHT file for full details. Squid
15 * incorporates software developed and/or copyrighted by other
16 * sources; see the CREDITS file for full details.
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
26ac0430 22 *
376f7892 23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
26ac0430 27 *
376f7892 28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
3b1797bd 31 *
32 */
33
582c2af2 34#include "squid.h"
93bdc610 35#include "win32.h"
3b1797bd 36
7aa9bb3e 37#if _SQUID_WINDOWS_
485a0d3f 38#if HAVE_WIN32_PSAPI
39#include <psapi.h>
40#endif
11871e3c 41#ifndef _MSWSOCK_
42#include <mswsock.h>
43#endif
485a0d3f 44#include <fde.h>
06648839 45
1bc874d7 46SQUIDCEXTERN LPCRITICAL_SECTION dbg_mutex;
06648839 47void WIN32_ExceptionHandlerCleanup(void);
48static LPTOP_LEVEL_EXCEPTION_FILTER Win32_Old_ExceptionHandler = NULL;
62e76326 49
65d448bc
AJ
50int
51Win32__WSAFDIsSet(int fd, fd_set FAR * set)
485a0d3f 52{
53 fde *F = &fd_table[fd];
54 SOCKET s = F->win32.handle;
55
cc192b50 56 return __WSAFDIsSet(s, set);
485a0d3f 57}
58
06648839 59LONG CALLBACK WIN32_ExceptionHandler(EXCEPTION_POINTERS* ep)
60{
61 EXCEPTION_RECORD* er;
62
63 er = ep->ExceptionRecord;
64
65 switch (er->ExceptionCode) {
66
67 case EXCEPTION_ACCESS_VIOLATION:
68 raise(SIGSEGV);
69 break;
70
71 case EXCEPTION_DATATYPE_MISALIGNMENT:
72
73 case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
74
75 case EXCEPTION_IN_PAGE_ERROR:
76 death(SIGBUS);
77 break;
78
79 default:
80 break;
81 }
82
83 return EXCEPTION_CONTINUE_SEARCH;
84}
85
06648839 86void WIN32_ExceptionHandlerInit()
87{
88#if !defined(_DEBUG)
89
90 if (Win32_Old_ExceptionHandler == NULL)
91 Win32_Old_ExceptionHandler = SetUnhandledExceptionFilter(WIN32_ExceptionHandler);
92
93#endif
94}
95
96void WIN32_ExceptionHandlerCleanup()
97{
98 if (Win32_Old_ExceptionHandler != NULL)
99 SetUnhandledExceptionFilter(Win32_Old_ExceptionHandler);
100}
101
5def7931 102#endif /* SQUID_WINDOWS_ */