⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chretrieve.c

📁 早期freebsd实现
💻 C
字号:
#include <stdio.h>/* contains: * CH_RetrieveItem */#include <sys/types.h>#include <netns/ns.h>#include "Clearinghouse2_defs.h"#include <xnscourier/CHEntries.h>#include <xnscourier/except.h>/* * This module contains the routine: * CH_RetrieveItem(pattern,property,result) *	ObjectNamePattern pattern; *	Property property; *	RetrieveItemResults *result; */static Cardinal nullhash = 0;static Authenticator nullagent = {{0,{0,(Unspecified*) 0}},				  {1,&nullhash}};static ObjectName currentname;extern struct ns_addr *LookupCHAddr();CH_RetrieveItem(pattern,property,result)	ObjectNamePattern pattern;	Property property;	RetrieveItemResults *result;{	CourierConnection *conn, *ch2conn;	extern CourierConnection *CH_GetFirstCH(), *CH_GetOtherCH();	RetrieveItemResults riresult;	ObjectName hint;		/* from WrongServer errors */	if (pattern.object == NULL ||	    pattern.domain == NULL ||	    pattern.organization == NULL) {		return(1);	    }	if ((conn = CH_GetFirstCH()) == NULL) {		fprintf(stderr,"Can't open connection to local Clearinghouse\n");		return(1);	}	DURING {		riresult= RetrieveItem(conn, NULL,				pattern,property,nullagent);	} HANDLER {		if (Exception.Code == REJECT_ERROR) {		    CourierClose(conn);		    fprintf(stderr,"Problem with clearinghouse.addresses. Local CH rejected request\n");		    return(1);		}		if (Exception.Code != WrongServer) {		    CourierClose(conn);		    return(1);	/* some random error */		}		hint = CourierErrArgs(WrongServerArgs,hint);		ch2conn = CH_GetOtherCH(conn,hint);		CourierClose(conn);		if (ch2conn == NULL) return(1);		conn = ch2conn;		/* probe the second clearinghouse */		DURING			riresult = RetrieveItem(conn,NULL,				pattern, property, nullagent);		HANDLER {			/* should be smarter is WrongServer here */			CourierClose(conn);			return(1);		} END_HANDLER;		/* we got it */	} END_HANDLER;	CourierClose(conn);	bcopy(&riresult, result, sizeof(Clearinghouse2_RetrieveItemResults));	return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -