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;
}
|