int uae_sem_init (uae_sem_t *sem, int pshared, unsigned int value) { int result = 0; InitSemaphore (&sem->mutex); NewList ((struct List *)&sem->wait_queue); sem->value = value; sem->live = 1; if (sem_count == 0) result = start_proxy_thread (); if (result != -1) sem_count++; return result; }
static int h_proxy(int argc, unsigned char ** argv){ struct child ch; ch.argc = argc; ch.argv = argv; if(!strcmp((char *)argv[0], "proxy")) { childdef.pf = proxychild; childdef.port = 3128; childdef.isudp = 0; childdef.service = S_PROXY; childdef.helpmessage = " -n - no NTLM support\n"; #ifdef NOIPV6 if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){ fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, proxy may run very slow\n", linenum); } #endif } else if(!strcmp((char *)argv[0], "pop3p")) { childdef.pf = pop3pchild; childdef.port = 110; childdef.isudp = 0; childdef.service = S_POP3P; childdef.helpmessage = " -hdefault_host[:port] - use this host and port as default if no host specified\n"; } else if(!strcmp((char *)argv[0], "smtpp")) { childdef.pf = smtppchild; childdef.port = 25; childdef.isudp = 0; childdef.service = S_SMTPP; childdef.helpmessage = " -hdefault_host[:port] - use this host and port as default if no host specified\n"; } else if(!strcmp((char *)argv[0], "ftppr")) { childdef.pf = ftpprchild; childdef.port = 21; childdef.isudp = 0; childdef.service = S_FTPPR; childdef.helpmessage = " -hdefault_host[:port] - use this host and port as default if no host specified\n"; } else if(!strcmp((char *)argv[0], "socks")) { childdef.pf = sockschild; childdef.port = 1080; childdef.isudp = 0; childdef.service = S_SOCKS; childdef.helpmessage = " -n - no NTLM support\n"; #ifdef NOIPV6 if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){ fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, socks may run very slow\n", linenum); } #endif } else if(!strcmp((char *)argv[0], "tcppm")) { childdef.pf = tcppmchild; childdef.port = 0; childdef.isudp = 0; childdef.service = S_TCPPM; childdef.helpmessage = ""; } else if(!strcmp((char *)argv[0], "icqpr")) { childdef.pf = icqprchild; childdef.port = 0; childdef.isudp = 0; childdef.service = S_ICQPR; childdef.helpmessage = ""; } /* else if(!strcmp((char *)argv[0], "msnpr")) { childdef.pf = msnprchild; childdef.port = 0; childdef.isudp = 0; childdef.service = S_MSNPR; childdef.helpmessage = ""; } */ else if(!strcmp((char *)argv[0], "udppm")) { childdef.pf = udppmchild; childdef.port = 0; childdef.isudp = 1; childdef.service = S_UDPPM; childdef.helpmessage = " -s single packet UDP service for request/reply (DNS-like) services\n"; } else if(!strcmp((char *)argv[0], "admin")) { childdef.pf = adminchild; childdef.port = 80; childdef.isudp = 0; childdef.service = S_ADMIN; } else if(!strcmp((char *)argv[0], "dnspr")) { childdef.pf = dnsprchild; childdef.port = 53; childdef.isudp = 1; childdef.service = S_DNSPR; childdef.helpmessage = " -s - simple DNS forwarding - do not use 3proxy resolver / name cache\n"; #ifndef NOIPV6 if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize) || resolvfunc == fakeresolver){ fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, dnspr will not work as expected\n", linenum); } #endif } return start_proxy_thread(&ch); }