Skip to content
This repository
Browse code

ensure compatibility with Erlang R13B04

For R13B04 compatibility, fix bare calls to integer_to_list and
list_to_integer, and in yaws_davlock provide an alternative for pre-R14 for
finding hwaddrs.
  • Loading branch information...
commit 954ccb189900c6fdeaf3b5d33a102a61730b9f9d 1 parent 0f41b7b
Steve Vinoski authored October 23, 2012
50  src/yaws.erl
@@ -426,7 +426,7 @@ upto(I,  [H|T]) -> [H|upto(I-1, T)].
426 426
 
427 427
 
428 428
 to_string(X) when is_float(X)   -> io_lib:format("~.2.0f",[X]);
429  
-to_string(X) when is_integer(X) -> integer_to_list(X);
  429
+to_string(X) when is_integer(X) -> erlang:integer_to_list(X);
430 430
 to_string(X) when is_atom(X)    -> atom_to_list(X);
431 431
 to_string(X)                    -> lists:concat([X]).
432 432
 
@@ -486,11 +486,11 @@ local_time_as_gmt_string(LocalTime) ->
486 486
 
487 487
 time_to_string({{Year, Month, Day}, {Hour, Min, Sec}}, Zone) ->
488 488
     [day(Year, Month, Day), ", ",
489  
-     mk2(Day), " ", month(Month), " ", integer_to_list(Year), " ",
  489
+     mk2(Day), " ", month(Month), " ", erlang:integer_to_list(Year), " ",
490 490
      mk2(Hour), ":", mk2(Min), ":", mk2(Sec), " ", Zone].
491 491
 
492  
-mk2(I) when I < 10 -> [$0 | integer_to_list(I)];
493  
-mk2(I)             -> integer_to_list(I).
  492
+mk2(I) when I < 10 -> [$0 | erlang:integer_to_list(I)];
  493
+mk2(I)             -> erlang:integer_to_list(I).
494 494
 
495 495
 day(Year, Month, Day) ->
496 496
     int_to_wd(calendar:day_of_the_week(Year, Month, Day)).
@@ -536,18 +536,18 @@ stringdate_to_datetime([_D1, _D2, _D3, $\,, $ |Tail]) ->
536 536
     stringdate_to_datetime1(Tail).
537 537
 
538 538
 stringdate_to_datetime1([A, B, $\s |T]) ->
539  
-    stringdate_to_datetime2(T, list_to_integer([A,B]));
  539
+    stringdate_to_datetime2(T, erlang:list_to_integer([A,B]));
540 540
 stringdate_to_datetime1([A, $\s |T]) ->
541  
-    stringdate_to_datetime2(T, list_to_integer([A])).
  541
+    stringdate_to_datetime2(T, erlang:list_to_integer([A])).
542 542
 
543 543
 stringdate_to_datetime2([M1, M2, M3, $\s , Y1, Y2, Y3, Y4, $\s,
544 544
                          H1, H2, $:, Min1, Min2,$:,
545 545
                          S1, S2,$\s ,$G, $M, $T|_], Day) ->
546  
-    {{list_to_integer([Y1,Y2,Y3,Y4]),
  546
+    {{erlang:list_to_integer([Y1,Y2,Y3,Y4]),
547 547
       month_str_to_int([M1, M2, M3]), Day},
548  
-     {list_to_integer([H1, H2]),
549  
-      list_to_integer([Min1, Min2]),
550  
-      list_to_integer([S1, S2])}}.
  548
+     {erlang:list_to_integer([H1, H2]),
  549
+      erlang:list_to_integer([Min1, Min2]),
  550
+      erlang:list_to_integer([S1, S2])}}.
551 551
 
552 552
 
553 553
 %% used by If-Modified-Since header code
@@ -1263,7 +1263,7 @@ make_cache_control_header(MimeType, FI) ->
1263 1263
 
1264 1264
 
1265 1265
 make_cache_control_header(TTL) ->
1266  
-    ["Cache-Control: ", "max-age=", integer_to_list(TTL), "\r\n"].
  1266
+    ["Cache-Control: ", "max-age=", erlang:integer_to_list(TTL), "\r\n"].
1267 1267
 
1268 1268
 
1269 1269
 make_location_header(Where) ->
@@ -1301,14 +1301,14 @@ make_content_range_header(all) ->
1301 1301
     undefined;
1302 1302
 make_content_range_header({fromto, From, To, Tot}) ->
1303 1303
     ["Content-Range: bytes ",
1304  
-     integer_to_list(From), $-, integer_to_list(To),
1305  
-     $/, integer_to_list(Tot), $\r, $\n].
  1304
+     erlang:integer_to_list(From), $-, erlang:integer_to_list(To),
  1305
+     $/, erlang:integer_to_list(Tot), $\r, $\n].
1306 1306
 
1307 1307
 make_content_length_header(Size) when is_integer(Size) ->
1308  
-    ["Content-Length: ", integer_to_list(Size), "\r\n"];
  1308
+    ["Content-Length: ", erlang:integer_to_list(Size), "\r\n"];
1309 1309
 make_content_length_header(FI) when is_record(FI, file_info) ->
1310 1310
     Size = FI#file_info.size,
1311  
-    ["Content-Length: ", integer_to_list(Size), "\r\n"];
  1311
+    ["Content-Length: ", erlang:integer_to_list(Size), "\r\n"];
1312 1312
 make_content_length_header(_) ->
1313 1313
     undefined.
1314 1314
 
@@ -1393,7 +1393,7 @@ outh_serialize() ->
1393 1393
                undefined -> 200;
1394 1394
                Int       -> Int
1395 1395
            end,
1396  
-    StatusLine = ["HTTP/1.1 ", integer_to_list(Code), " ",
  1396
+    StatusLine = ["HTTP/1.1 ", erlang:integer_to_list(Code), " ",
1397 1397
                   yaws_api:code_to_phrase(Code), "\r\n"],
1398 1398
     GC=get(gc),
1399 1399
     if ?gc_has_debug(GC) -> yaws_debug:check_headers(H);
@@ -1534,7 +1534,7 @@ accumulate_header({"Content-Length", Len}) ->
1534 1534
         I when is_integer(I) ->
1535 1535
             accumulate_header({content_length, I});
1536 1536
         L when is_list(L) ->
1537  
-            accumulate_header({content_length, list_to_integer(L)})
  1537
+            accumulate_header({content_length, erlang:list_to_integer(L)})
1538 1538
     end;
1539 1539
 
1540 1540
 accumulate_header({transfer_encoding, What}) ->
@@ -1641,7 +1641,8 @@ user_to_home(User) ->
1641 1641
 
1642 1642
 uid_to_name(Uid) ->
1643 1643
     load_setuid_drv(),
1644  
-    P = open_port({spawn, "setuid_drv " ++ [$n|integer_to_list(Uid)]}, []),
  1644
+    P = open_port({spawn, "setuid_drv " ++
  1645
+                       [$n|erlang:integer_to_list(Uid)]}, []),
1645 1646
     receive
1646 1647
         {P, {data, "ok " ++ Name}} ->
1647 1648
             Name
@@ -2081,9 +2082,9 @@ redirect_port(SC) ->
2081 2082
         {"https", _, 443}    -> "";
2082 2083
         {"http", _, 80}      -> "";
2083 2084
         {_, undefined, 80}   -> "";
2084  
-        {_, undefined, Port} -> [$:|integer_to_list(Port)];
  2085
+        {_, undefined, Port} -> [$:|erlang:integer_to_list(Port)];
2085 2086
         {_, _SSL, 443}       -> "";
2086  
-        {_, _SSL, Port}      -> [$:|integer_to_list(Port)]
  2087
+        {_, _SSL, Port}      -> [$:|erlang:integer_to_list(Port)]
2087 2088
     end.
2088 2089
 
2089 2090
 redirect_scheme_port(SC) ->
@@ -2132,8 +2133,9 @@ mktemp(Template, Ret) ->
2132 2133
 
2133 2134
 mktemp(Dir, Template, Ret, I, Max, Suffix) when I < Max ->
2134 2135
     {X,Y,Z}  = now(),
2135  
-    PostFix = integer_to_list(X) ++ "-" ++ integer_to_list(Y) ++ "-" ++
2136  
-        integer_to_list(Z),
  2136
+    PostFix = erlang:integer_to_list(X) ++ "-" ++
  2137
+        erlang:integer_to_list(Y) ++ "-" ++
  2138
+        erlang:integer_to_list(Z),
2137 2139
     F = filename:join(Dir, Template ++ [$_ | PostFix] ++ Suffix),
2138 2140
     filelib:ensure_dir(F),
2139 2141
     case file:open(F, [read, raw]) of
@@ -2201,7 +2203,7 @@ get_chunk_header(Fd, SSL) ->
2201 2203
                    end,
2202 2204
             ?Debug("Get chunk num from line ~p~n",[Line]),
2203 2205
             {N, Exts} = split_at(Line, $;),
2204  
-            {list_to_integer(strip_spaces(N),16), strip_spaces(Exts)};
  2206
+            {erlang:list_to_integer(strip_spaces(N),16), strip_spaces(Exts)};
2205 2207
         {error, _Rsn} ->
2206 2208
             exit(normal)
2207 2209
     end.
@@ -2307,7 +2309,7 @@ integer_to_ip(_, _) ->
2307 2309
     throw({error, einval}).
2308 2310
 
2309 2311
 netmask_to_integer(Type, NetMask) ->
2310  
-    case catch list_to_integer(NetMask) of
  2312
+    case catch erlang:list_to_integer(NetMask) of
2311 2313
         I when is_integer(I) ->
2312 2314
             case Type of
2313 2315
                 ipv4 -> (1 bsl ?MAXBITS_IPV4) - (1 bsl (?MAXBITS_IPV4 - I));
2  src/yaws_dav.erl
@@ -716,7 +716,7 @@ h_timeout(A) ->
716 716
                               I when is_integer(I) -> I;
717 717
                               _ -> ?LOCK_LIFETIME
718 718
                           end,
719  
-                    min(Val,?LOCK_LIFETIME);
  719
+                    erlang:min(Val,?LOCK_LIFETIME);
720 720
                 _ -> ?LOCK_LIFETIME
721 721
             end;
722 722
         _ ->
31  src/yaws_davlock.erl
@@ -338,10 +338,7 @@ locktoken() ->
338 338
     <<TimeHi:12, TimeMid:16, TimeLow:32>> = <<Timestamp:60>>,
339 339
     Clocksequence = <<Micro:14>>,
340 340
     <<ClockseqHi:6, ClockseqLow:8>> = Clocksequence,
341  
-    {ok,Ifs} = inet:getifaddrs(),
342  
-    Addrs = [ lists:keysearch(hwaddr,1,Attr) || {_If,Attr} <- Ifs ],
343  
-    Addr = lists:max([ A || {value,{hwaddr,A}} <- Addrs ]),
344  
-    Node = list_to_binary(Addr),
  341
+    Node = get_hwaddr(),
345 342
     UUID = <<TimeLow:32, TimeMid:16, Version:4, TimeHi:12,
346 343
       Variant:2, ClockseqLow:8, ClockseqHi:6, Node/binary>>,
347 344
     <<U0:32, U1:16, U2:16, U3:16, U4:48>> = UUID,
@@ -353,3 +350,29 @@ format(["/"|T]) ->
353 350
     format(T);
354 351
 format([H|T]) ->
355 352
     lists:flatten(["/",H|format(T)]).
  353
+
  354
+get_hwaddr() ->
  355
+    get_hwaddr(erlang:function_exported(inet, getifaddrs, 0)).
  356
+get_hwaddr(true) ->
  357
+    {ok,Ifs} = inet:getifaddrs(),
  358
+    Addrs = [ lists:keysearch(hwaddr,1,Attr) || {_If,Attr} <- Ifs ],
  359
+    Addr = lists:max([ A || {value,{hwaddr,A}} <- Addrs ]),
  360
+    list_to_binary(Addr);
  361
+get_hwaddr(false) ->
  362
+    %% this clause is for backward compatibility to R13
  363
+    {ok, Ifs} = inet:getiflist(),
  364
+    Addrs = lists:foldl(fun([{hwaddr, HW}], Acc) -> [HW|Acc];
  365
+                           ([], Acc) -> Acc
  366
+                        end, [], [begin {ok, HW} = inet:ifget(If, [hwaddr]), HW end || If <- Ifs]),
  367
+    HWAddrs = case Addrs of
  368
+                  [] ->
  369
+                      %% hwaddr doesn't work on Mac on R13. Fall back to ifconfig :(
  370
+                      Ifconfig = os:cmd("/sbin/ifconfig -a"),
  371
+                      {ok, Pat} = re:compile("ether\s+([0-9a-fA-F:]+)"),
  372
+                      {match, Matches} = re:run(Ifconfig, Pat, [global, {capture, [1]}]),
  373
+                      HWs = [string:substr(Ifconfig, At+1, Len) || [{At,Len}] <- Matches],
  374
+                      [[erlang:list_to_integer(V, 16) || V <- string:tokens(S, ":")] || S <- HWs];
  375
+                  _ ->
  376
+                      Addrs
  377
+              end,
  378
+    list_to_binary(lists:max(HWAddrs)).
30  test/t2/app_test.erl
@@ -109,9 +109,7 @@ read_loop(C, I, Sz)  ->
109 109
 get_cont_len(C) ->
110 110
     ?line {value, {http_header, _,_,_, LenStr}} =
111 111
 	lists:keysearch('Content-Length', 3, tftest:get_headers(C)),
112  
-    {ok, list_to_integer(LenStr)}.
113  
-
114  
-
  112
+    {ok, erlang:list_to_integer(LenStr)}.
115 113
 
116 114
 
117 115
 test2() ->
@@ -532,7 +530,7 @@ recv_hdrs(Sock, Len) ->
532 530
         {http, Sock, {http_error, Error}} ->
533 531
             {error, Error};
534 532
         {http, Sock, {http_header, _, 'Content-Length', _, LenStr}} ->
535  
-            recv_hdrs(Sock, list_to_integer(LenStr));
  533
+            recv_hdrs(Sock, erlang:list_to_integer(LenStr));
536 534
         {http, Sock, {http_header, _, _, _, _}} ->
537 535
             recv_hdrs(Sock, Len);
538 536
         {http, Sock, {http_response, _, 200, "OK"}} ->
@@ -555,7 +553,7 @@ small_post() ->
555 553
     io:format("  small post\n",[]),
556 554
     {ok, Bin} = file:read_file("../../www/1000.txt"),
557 555
     Sz = size(Bin),
558  
-    Uri = "http://localhost:8006/posttest/" ++ integer_to_list(Sz),
  556
+    Uri = "http://localhost:8006/posttest/" ++ erlang:integer_to_list(Sz),
559 557
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
560 558
     ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Hdrs, post, Bin, []),
561 559
     ok.
@@ -564,7 +562,7 @@ large_post() ->
564 562
     io:format("  large post\n",[]),
565 563
     {ok, Bin} = file:read_file("../../www/10000.txt"),
566 564
     Sz = size(Bin),
567  
-    Uri = "http://localhost:8006/posttest/" ++ integer_to_list(Sz),
  565
+    Uri = "http://localhost:8006/posttest/" ++ erlang:integer_to_list(Sz),
568 566
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
569 567
     ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Hdrs, post, Bin, []),
570 568
     ok.
@@ -573,7 +571,7 @@ small_chunked_post() ->
573 571
     io:format("  small chunked post\n",[]),
574 572
     {ok, Bin} = file:read_file("../../www/3000.txt"),
575 573
     Sz = size(Bin),
576  
-    Uri = "http://localhost:8006/posttest/chunked/" ++ integer_to_list(Sz),
  574
+    Uri = "http://localhost:8006/posttest/chunked/" ++ erlang:integer_to_list(Sz),
577 575
     Hdrs = [{content_type, "binary/octet-stream"}],
578 576
     Opts = [{transfer_encoding, {chunked, 1000*1000}}],
579 577
     ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Hdrs, post, Bin, Opts),
@@ -583,7 +581,7 @@ large_chunked_post() ->
583 581
     io:format("  large chunked post\n",[]),
584 582
     {ok, Bin} = file:read_file("../../www/10000.txt"),
585 583
     Sz = size(Bin),
586  
-    Uri = "http://localhost:8006/posttest/chunked/" ++ integer_to_list(Sz),
  584
+    Uri = "http://localhost:8006/posttest/chunked/" ++ erlang:integer_to_list(Sz),
587 585
     Hdrs = [{content_type, "binary/octet-stream"}],
588 586
 
589 587
     %% size of chunk _IS_NOT_ a multiple of partial_post_size
@@ -609,7 +607,7 @@ flush_small_post() ->
609 607
     io:format("  flush small post\n",[]),
610 608
     {ok, Bin} = file:read_file("../../www/1000.txt"),
611 609
     Sz = size(Bin),
612  
-    Uri1 = "http://localhost:8006/flushtest/" ++ integer_to_list(Sz),
  610
+    Uri1 = "http://localhost:8006/flushtest/" ++ erlang:integer_to_list(Sz),
613 611
     Uri2 = "http://localhost:8006/hello.txt",
614 612
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
615 613
     {ok, ConnPid} = ibrowse:spawn_worker_process("localhost", 8006),
@@ -622,7 +620,7 @@ flush_large_post() ->
622 620
     io:format("  flush large post\n",[]),
623 621
     {ok, Bin} = file:read_file("../../www/10000.txt"),
624 622
     Sz = size(Bin),
625  
-    Uri1 = "http://localhost:8006/flushtest/" ++ integer_to_list(Sz),
  623
+    Uri1 = "http://localhost:8006/flushtest/" ++ erlang:integer_to_list(Sz),
626 624
     Uri2 = "http://localhost:8006/hello.txt",
627 625
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
628 626
     {ok, ConnPid} = ibrowse:spawn_worker_process("localhost", 8006),
@@ -635,7 +633,7 @@ flush_chunked_post() ->
635 633
     io:format("  flush chunked post\n",[]),
636 634
     {ok, Bin} = file:read_file("../../www/10000.txt"),
637 635
     Sz = size(Bin),
638  
-    Uri1 = "http://localhost:8006/flushtest/chunked/" ++ integer_to_list(Sz),
  636
+    Uri1 = "http://localhost:8006/flushtest/chunked/" ++ erlang:integer_to_list(Sz),
639 637
     Uri2 = "http://localhost:8006/hello.txt",
640 638
     Hdrs = [{content_type, "binary/octet-stream"}],
641 639
     Opts = [{transfer_encoding, {chunked, 4000*1000}}],
@@ -687,20 +685,20 @@ test_te_trailer_and_extensions() ->
687 685
     Data = ["This is the data in the first chunk\n",
688 686
             "and this is the second one\n",
689 687
             "con", "sequence"],
690  
-    Path = "/posttest/chunked/" ++ integer_to_list(length(lists:flatten(Data))),
  688
+    Path = "/posttest/chunked/" ++ erlang:integer_to_list(length(lists:flatten(Data))),
691 689
     ?line gen_tcp:send(Sock, "POST "++Path++" HTTP/1.1\r\n"
692 690
                        "Host: localhost\r\n"
693 691
                        "Trailer: Content-Type\r\n"
694 692
                        "Trailer: Extra-Headers-WooHoo\r\n"
695 693
                        "Transfer-Encoding: Chunked\r\n\r\n"),
696  
-    Body = lists:flatten([[integer_to_list(length(X), 16),"; foo=bar\r\n",
  694
+    Body = lists:flatten([[erlang:integer_to_list(length(X), 16),"; foo=bar\r\n",
697 695
                            X,"\r\n"] || X <- Data]),
698 696
     ?line gen_tcp:send(Sock, Body),
699 697
     ?line gen_tcp:send(Sock, "0\r\n"
700 698
                        "Extra-Headers-WooHoo: something\r\n"
701 699
                        "Content-Type: text/plain\r\n\r\n"),
702 700
     inet:setopts(Sock, [{packet, http}]),
703  
-    ?line {ok, Len} = recv_hdrs(Sock),
  701
+    ?line {ok, _Len} = recv_hdrs(Sock),
704 702
     gen_tcp:close(Sock),
705 703
     ok.
706 704
 
@@ -712,7 +710,7 @@ test_expires() ->
712 710
 
713 711
     %% Retrieve max-age value to test Expires header
714 712
     ?line "max-age=" ++ Rest = proplists:get_value("Cache-Control", Hdrs),
715  
-    ?line Secs = list_to_integer(Rest),
  713
+    ?line Secs = erlang:list_to_integer(Rest),
716 714
 
717 715
     %% Convert Date and Expires into datetime()
718 716
     ?line Date = proplists:get_value("Date", Hdrs),
@@ -837,7 +835,7 @@ test_ssl_multipart_post() ->
837 835
               ],
838 836
     Uri = "https://localhost:8444/test_upload_ssl.yaws",
839 837
     Options = [{is_ssl, true}, {ssl_options, [{verify, 0}]}],
840  
-    ?line {ok, "200", _, _} = Reply = ibrowse:send_req(Uri, Headers, post, Data, Options),
  838
+    ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Headers, post, Data, Options),
841 839
     ok = application:stop(ssl),
842 840
     ok = application:stop(public_key),
843 841
     ok = application:stop(crypto),
10  test/t4/app_test.erl
@@ -92,7 +92,7 @@ test_post_revproxy() ->
92 92
 small_post() ->
93 93
     io:format("  small post\n",[]),
94 94
     {ok, Bin} = file:read_file("../../www/1000.txt"),
95  
-    Sz = integer_to_list(size(Bin)),
  95
+    Sz = erlang:integer_to_list(size(Bin)),
96 96
     Uri = "http://localhost:8000/revproxy1/posttest/" ++ Sz,
97 97
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
98 98
     ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Hdrs, post, Bin, []),
@@ -101,7 +101,7 @@ small_post() ->
101 101
 large_post() ->
102 102
     io:format("  large post\n",[]),
103 103
     {ok, Bin} = file:read_file("../../www/10000.txt"),
104  
-    Sz   = integer_to_list(size(Bin)),
  104
+    Sz   = erlang:integer_to_list(size(Bin)),
105 105
     Uri  = "http://localhost:8000/revproxy1/posttest/" ++ Sz,
106 106
     Hdrs = [{content_length, Sz}, {content_type, "binary/octet-stream"}],
107 107
     ?line {ok, "200", _, _} = ibrowse:send_req(Uri, Hdrs, post, Bin, []),
@@ -111,7 +111,7 @@ small_chunked_post() ->
111 111
     %% Chunk size is less than partial_post_size
112 112
     io:format("  small chunked post\n",[]),
113 113
     {ok, Bin} = file:read_file("../../www/3000.txt"),
114  
-    Sz   = integer_to_list(size(Bin)),
  114
+    Sz   = erlang:integer_to_list(size(Bin)),
115 115
     Uri  = "http://localhost:8000/revproxy1/posttest/chunked/" ++ Sz,
116 116
     Hdrs = [{content_type, "binary/octet-stream"}],
117 117
     Opts = [{transfer_encoding, {chunked, 1000*1000}}],
@@ -122,7 +122,7 @@ large_chunked_post() ->
122 122
     %% Chunk size is greater than partial_post_size
123 123
     io:format("  large chunked post\n",[]),
124 124
     {ok, Bin} = file:read_file("../../www/10000.txt"),
125  
-    Sz   = integer_to_list(size(Bin)),
  125
+    Sz   = erlang:integer_to_list(size(Bin)),
126 126
     Uri  = "http://localhost:8000/revproxy1/posttest/chunked/" ++ Sz,
127 127
     Hdrs = [{content_type, "binary/octet-stream"}],
128 128
     Opts = [{transfer_encoding, {chunked, 4000*1000}}],
@@ -268,7 +268,7 @@ recv_hdrs(Sock, Len) ->
268 268
         {http, Sock, {http_error, Error}} ->
269 269
             {error, Error};
270 270
         {http, Sock, {http_header, _, 'Content-Length', _, LenStr}} ->
271  
-            recv_hdrs(Sock, list_to_integer(LenStr));
  271
+            recv_hdrs(Sock, erlang:list_to_integer(LenStr));
272 272
         {http, Sock, {http_header, _, _, _, _}} ->
273 273
             recv_hdrs(Sock, Len);
274 274
         {http, Sock, {http_response, _, 200, "OK"}} ->

0 notes on commit 954ccb1

Please sign in to comment.
Something went wrong with that request. Please try again.