またダウンか

またCoreSSLダウンしてました。

ホントに、共有SSLってのも善し悪しです。というか、頼むから冗長化して欲しいです。


という話とは別で、まだarpingの件、引きずってたりします。



実はその、親アプリから引き渡される引数に想定外のパターンがあったりして・・・

IPアドレスを引き渡すとき、1つのオブジェクト→普通に渡される。
複数のオブジェクト→カンマ区切りで渡される。
特殊なオブジェクト→意味不明な文字列が・・・。


とりあえず、カンマ区切りのだけでも対処を・・・と思って

token = strtok_s(argv[i], ",", &nexttoken);
while(token != NULL) {
  ipaddr = inet_addr(token);
  if(maxIp < MAX_IP) {
    if(ipaddr == 0 || htonl(ipaddr) >= INETADDR_MULTICAST) {
      printf("ip address!?. %s = %x¥n", argv[i], ipaddr);
      return -1;
    }
    IPAddrList[maxIp] = ipaddr;
    maxIp++;
  } else {
    printf("ip address too many then %d.¥n", MAX_IP);
    return -1;
  }
  token = strtok_s(NULL, ",", &nexttoken);
}
こんな感じで、複数IPアドレスが渡されたときの対処をしてみた。


気になるのが、main()の肥大化。
引数の処理なんか全部main()内でやってるせいもあって、main()の長さが160行もある。

いい加減、このへんも直さねば・・・と思ってるけど、なんせ時間がない!っつーのが実情だったりする。


ちょっと面白いなとか思ってるのが、Windowsにはinet_addr()はあってもinet_atonは無かったりすることだ。wsprintf()だのstrcpy()だのは全部、wsprintf_s()とかstrcpy_S()に直せとかコンパイル時に五月蠅くいってくるのだけれど。(_s付きがセキュリティ面から改善した関数らしい)inet_addr()は昔のままだ。
・・・といっても、不正なStringを与えたときの戻り値が0xffffffffになる事で、255.255.255.255をうまく扱えないのがダメなだけだと思うが。