+int zass_openresult(ZASS p, int *complete)
+{
+ int len;
+ PINITRESPONSE ires;
+
+ if ((len = zutil_GetBERFromNet(p->ass, (unsigned char*)p->buf,
+ p->maxrecordsize)) <= 0)
+ {
+ gw_log(GW_LOG_FATAL, ZASS_TYPE, "Failed to receive initresponse");
+ return 0;
+ }
+ ires = (PINITRESPONSE) zutil_CreateFromData((unsigned char*)p->buf, len);
+ if (InitResponse_GetTag(ires) != INITRESPONSE_TAG)
+ {
+ gw_log(GW_LOG_FATAL, ZASS_TYPE, "Expected initresponse from target");
+ return 0;
+ }
+ gw_log(ZASS_DEBUG, ZASS_TYPE, "Got initresponse");
+ if (!InitResponse_GetResult(ires))
+ {
+ gw_log(GW_LOG_FATAL, ZASS_TYPE, "Access to target denied.");
+ return 0;
+ }
+ gw_log(ZASS_DEBUG, ZASS_TYPE, "Connected OK");
+ p->preferredmessagesize = InitResponse_GetPreferredMessageSize(ires);
+ p->maxrecordsize = InitResponse_GetExceptionalRecordSize(ires);
+ InitResponse_Destroy(ires);
+ *complete = 1;
+ return 0;
+}
+
+ZASS zass_open(char *host, int port, int *complete)