示例#1
0
文件: beos.c 项目: kheradmand/Break
static void tell_workers_to_exit(void)
{
    apr_size_t len;
    int i = 0;

    mpm_state = AP_MPMQ_STOPPING;

    for (i = 0 ; i < ap_max_child_assigned; i++){
        len = 4;
        if (apr_sendto(udp_sock, udp_sa, 0, "die!", &len) != APR_SUCCESS)
            break;
    }   
}
示例#2
0
//---------------------------------------------------------------------
// itm_trysendto
//---------------------------------------------------------------------
long itm_trysendto(int af)
{
	struct ITMHUDP *head;
	struct sockaddr*remote;
	unsigned short dsize;
	unsigned short xsize;
	long total = 0;

#ifdef AF_INET6
	if (af == AF_INET6) {
		for (xsize = 1; xsize > 0; ) {
			if (itm_dgramdat6.size < 2) break;
			ims_peek(&itm_dgramdat6, &dsize, 2);
			ims_peek(&itm_dgramdat6, itm_zdata, dsize);

			remote = (struct sockaddr*)(itm_zdata + 2);
			head = (struct ITMHUDP*)(itm_zdata + ITM_ADDRSIZE6 + 2);
			xsize = dsize - ITM_ADDRSIZE6 - 2;
			xsize = apr_sendto(itm_dgram_sock6, (char*)head, xsize, 0, remote, ITM_ADDRSIZE6);
			if (xsize > 0) {
				ims_drop(&itm_dgramdat6, dsize);
				total += xsize;
			}
		}
		return total;
	}
#endif

	for (xsize = 1; xsize > 0; ) {
		if (itm_dgramdat4.size < 2) break;
		ims_peek(&itm_dgramdat4, &dsize, 2);
		ims_peek(&itm_dgramdat4, itm_zdata, dsize);

		remote = (struct sockaddr*)(itm_zdata + 2);
		head = (struct ITMHUDP*)(itm_zdata + ITM_ADDRSIZE4 + 2);
		xsize = dsize - ITM_ADDRSIZE4 - 2;
		xsize = sendto(itm_dgram_sock4, (char*)head, xsize, 0, remote, ITM_ADDRSIZE4);

		if (xsize > 0) {
			ims_drop(&itm_dgramdat4, dsize);
			total += xsize;
		}
	}

	return total;
}