send_token() はトークンまたはメッセージを送信します。
/* * 関数: send_token * * 目的: トークンをファイル記述子に書き込む * * 引数: * * s (r) 開いたファイル記述子 * tok (r) 書き込むトークン * * 戻り値: 成功した場合は 0、失敗した場合は -1 * * 効果: * * send_token はまずトークンの長さ (ネットワーク上の長さ) を、 * 次にトークンのデータをファイル記述子 s に書き込みます。 * 成功した場合は 0 を戻し、エラーが発生したり、 * すべてのデータを書き込むことができなかった場合は * -1 を戻します。 */ int send_token(s, tok) int s; gss_buffer_t tok; { int len, ret; len = htonl((OM_uint32)tok->length); ret = write_all(s, (char *) &len, sizeof(int)); if (ret < 0) { perror("sending token length"); return -1; } else if (ret != 4) { if (display_file) fprintf(display_file, "sending token length: %d of %d bytes written\n", ret, 4); return -1; } ret = write_all(s, tok->value, (OM_uint32)tok->length); if (ret < 0) { perror("sending token data"); return -1; } else if (ret != tok->length) { if (display_file) fprintf(display_file, "sending token data: %d of %d bytes written\n", ret, tok->length); return -1; } return 0; } |