~ubuntu-branches/debian/stretch/libnice/stretch

« back to all changes in this revision

Viewing changes to stun/usages/bind.c

  • Committer: Package Import Robot
  • Author(s): Simon McVittie
  • Date: 2014-05-14 12:00:13 UTC
  • mfrom: (1.2.9) (5.1.13 sid)
  • Revision ID: package-import@ubuntu.com-20140514120013-fi5mh9bexrjnwnd8
Tags: 0.1.7-1
* New upstream release 0.1.6, 0.1.7
  - fixes various compiler warnings that were mistakenly fatal in 0.1.5
    (Closes: #743232, #743233)
  - update symbols file for new API
* Explicitly disable -Werror, even if we package a non-release in future
* Don't run tests during the build. We were ignoring failures already,
  and they sometimes hang until the buildd terminates them.
  Upstream (Olivier Crête) says they are stable enough to be useful
  for developers, but not for integration testing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
126
126
      if ((code / 100) == 3) {
127
127
        if (alternate_server && alternate_server_len) {
128
128
          if (stun_message_find_addr (msg, STUN_ATTRIBUTE_ALTERNATE_SERVER,
129
 
                  alternate_server,
 
129
                  (struct sockaddr_storage *) alternate_server,
130
130
                  alternate_server_len) != STUN_MESSAGE_RETURN_SUCCESS) {
131
131
            stun_debug (" Unexpectedly missing ALTERNATE-SERVER attribute\n");
132
132
            return STUN_USAGE_BIND_RETURN_ERROR;
143
143
 
144
144
      }
145
145
      return STUN_USAGE_BIND_RETURN_ERROR;
 
146
 
 
147
    default:
 
148
      /* Fall through. */
 
149
      break;
146
150
  }
147
151
 
148
152
  stun_debug ("Received %u-bytes STUN message\n", stun_message_length (msg));
149
153
 
150
154
  val = stun_message_find_xor_addr (msg,
151
 
      STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, addr, addrlen);
 
155
      STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, (struct sockaddr_storage *)addr,
 
156
      addrlen);
152
157
  if (val != STUN_MESSAGE_RETURN_SUCCESS)
153
158
  {
154
159
    stun_debug (" No XOR-MAPPED-ADDRESS: %d\n", val);
155
160
    val = stun_message_find_addr (msg,
156
 
        STUN_ATTRIBUTE_MAPPED_ADDRESS, addr, addrlen);
 
161
        STUN_ATTRIBUTE_MAPPED_ADDRESS, (struct sockaddr_storage *)addr,
 
162
        addrlen);
157
163
    if (val != STUN_MESSAGE_RETURN_SUCCESS)
158
164
    {
159
165
      stun_debug (" No MAPPED-ADDRESS: %d\n", val);
257
263
      case AF_INET6:
258
264
        setsockopt (fd, SOL_IPV6, IPV6_RECVERR, &yes, sizeof (yes));
259
265
        break;
 
266
      default:
 
267
        /* Nothing to do. */
 
268
        break;
260
269
    }
261
270
  }
262
271
#endif
348
357
 
349
358
static ssize_t
350
359
stun_trans_sendto (StunTransport *tr, const uint8_t *buf, size_t len,
351
 
                     const struct sockaddr *dst, socklen_t dstlen)
 
360
    const struct sockaddr *dst, socklen_t dstlen)
352
361
{
353
362
  static const int flags = MSG_DONTWAIT | MSG_NOSIGNAL;
354
363
  ssize_t val;
368
377
 
369
378
static ssize_t
370
379
stun_trans_recvfrom (StunTransport *tr, uint8_t *buf, size_t maxlen,
371
 
                       struct sockaddr * dst,
 
380
                       struct sockaddr_storage * dst,
372
381
                       socklen_t * dstlen)
373
382
{
374
383
  static const int flags = MSG_DONTWAIT | MSG_NOSIGNAL;
375
384
  ssize_t val;
376
385
 
377
386
  if (dstlen != NULL)
378
 
    val = recvfrom (tr->fd, (void *)buf, maxlen, flags, dst, dstlen);
 
387
    val = recvfrom (tr->fd, (void *)buf, maxlen, flags, (struct sockaddr *) dst,
 
388
        dstlen);
379
389
  else
380
390
    val = recv (tr->fd, (void *)buf, maxlen, flags);
381
391
 
389
399
static ssize_t
390
400
stun_trans_send (StunTransport *tr, const uint8_t *buf, size_t len)
391
401
{
392
 
  return stun_trans_sendto (tr, buf, len,
393
 
      (struct sockaddr *)&tr->dst, tr->dstlen);
 
402
  struct sockaddr *conv;
 
403
 
 
404
  conv = (struct sockaddr *) &tr->dst;
 
405
 
 
406
  return stun_trans_sendto (tr, buf, len, conv, tr->dstlen);
394
407
}
395
408
 
396
409
static ssize_t
441
454
 
442
455
/** Blocking mode STUN binding discovery */
443
456
StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
444
 
    socklen_t srvlen, struct sockaddr *addr, socklen_t *addrlen)
 
457
    socklen_t srvlen, struct sockaddr_storage *addr, socklen_t *addrlen)
445
458
{
446
459
  StunTimer timer;
447
460
  StunTransport trans;
500
513
            }
501
514
            continue;
502
515
          case STUN_USAGE_TIMER_RETURN_SUCCESS:
 
516
          default:
 
517
            /* Fall through. */
503
518
            break;
504
519
        }
505
520
      }
516
531
    if (valid != STUN_VALIDATION_SUCCESS) {
517
532
      ret = STUN_USAGE_TRANS_RETURN_RETRY;
518
533
    } else {
519
 
      bind_ret = stun_usage_bind_process (&msg, addr, addrlen,
520
 
          (struct sockaddr *) &alternate_server, &alternate_server_len);
 
534
      bind_ret = stun_usage_bind_process (&msg, (struct sockaddr *)  addr,
 
535
          addrlen, (struct sockaddr *) &alternate_server, &alternate_server_len);
521
536
      if (bind_ret == STUN_USAGE_BIND_RETURN_ALTERNATE_SERVER) {
522
537
        stun_trans_deinit (&trans);
523
538